# 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
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://icij.gitbook.io/prophecies/developers/publishing-a-new-docker-image.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
