# Publishing a new Docker image

## Docker image tag

The Docker image is tagged with the version extracted from the git tag (e.g., `icij/prophecies:1.0.0`). Additionally, the image is tagged as `latest`.

* **Image Repository**: [`icij/prophecies`](https://hub.docker.com/repository/docker/icij/prophecies/general)
* **Platform**:  linux/arm64, linux/amd64

This documentation provides a comprehensive guide on how to release a new Docker image, build, and test the application locally using the provided Makefile commands.

## Releasing a new Docker Image

### 1. Update Version

The version can be updated as `major`, `minor`, or `patch` using the Makefile. To do this, run one of the following commands depending on the type of version bump you need:

```bash
make major
make minor
make patch
```

These commands automatically update the version in `pyproject.toml` for the Python backend and `package.json` in the frontend directory, then commit these changes and tag the version in Git.

### 2. Push the Changes and Tag to Git

After updating the version and creating a git tag, push the changes and the tag to your git repository:

```bash
git push && git push --tags
```

Pushing the tag is crucial because the GitHub Actions workflow for Docker image publishing is triggered by a push to tags that follow the semantic versioning format, prefixed with `v` (e.g., `v1.0.0`).

## Build and test locally

A convenience `docker-compose.yml` file is located as the root of the repository. To build and test Prophecies locally with Docker, you can run from the app's root directory:

```bash
docker compose up
```
