{"id":49225458,"url":"https://github.com/tonicai/tonic_docker_compose","last_synced_at":"2026-04-24T07:02:09.993Z","repository":{"id":40404479,"uuid":"444603219","full_name":"TonicAI/tonic_docker_compose","owner":"TonicAI","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-16T15:44:48.000Z","size":46,"stargazers_count":3,"open_issues_count":0,"forks_count":11,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-09-16T18:09:54.152Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TonicAI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-01-05T00:13:22.000Z","updated_at":"2025-09-16T15:44:52.000Z","dependencies_parsed_at":"2023-12-28T19:37:51.903Z","dependency_job_id":"ad51d6cb-5dc8-4cda-bd18-b63f895576cf","html_url":"https://github.com/TonicAI/tonic_docker_compose","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TonicAI/tonic_docker_compose","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TonicAI%2Ftonic_docker_compose","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TonicAI%2Ftonic_docker_compose/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TonicAI%2Ftonic_docker_compose/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TonicAI%2Ftonic_docker_compose/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TonicAI","download_url":"https://codeload.github.com/TonicAI/tonic_docker_compose/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TonicAI%2Ftonic_docker_compose/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32212808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T03:15:14.334Z","status":"ssl_error","status_checked_at":"2026-04-24T03:15:11.608Z","response_time":64,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-24T07:02:07.864Z","updated_at":"2026-04-24T07:02:09.977Z","avatar_url":"https://github.com/TonicAI.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tonic Docker Compose\nDeploying Tonic via `docker-compose` is a relatively straightforward process. This repository contains an example/template docker-compose.yaml which can be used for this.\n\nProject structure:\n```\n.\n├── .template.env\n├── docker-compose.yaml\n└── README.md\n```\n\n[_docker-compose.yaml_](docker-compose.yaml)\n``` yaml\nservices:\n    tonic_web_server:\n        image: quay.io/tonicai/tonic_web_server:latest\n        ...\n    tonic_worker:\n        image: quay.io/tonicai/tonic_worker:latest\n        ...\n    # OPTIONAL (Recommended): This container must be deployed to support Webhooks and Email notifications.\n    tonic_notifications:\n        image: quay.io/tonicai/tonic_notifications:latest\n        ...\n    # OPTIONAL: It is recommended to use a standalone or managed Postgres database\n    # (e.g. AWS RDS for PostgreSQL, GCP Cloud SQL for PostgreSQL, Azure Database for PostgreSQL) for Tonic's application database.\n    # These provide many benefits such as automated backups and patches/upgrades. But a containerized PostgreSQL database can be used.\n    tonic_db:\n        image: postgres:14\n        ...\n```\n\n## Configuration\n\n### .env\nBefore deploying this setup, you need to rename [.template.env](.template.env) to `.env` and configure the following values, or set the environment variables directly within docker-compose.yaml. Note that several variables are shared by multiple, or all, containers.\n\n### Tonic License\n\n- This value will be provided by Tonic and must be input upon first startup of Tonic. Subsequently, it can be updated [from within the Tonic Admin portal](https://docs.tonic.ai/app/admin/on-premise-deployment/license-key-enter-update). Note that this was previously maintained via the `TONIC_LICENSE` environment variable, but this variable is no longer needed since version 519.\n\n### Environment Name\n\n- `ENVIRONMENT_NAME`: E.g. \"my-company-name\", or if deploying multiple Tonic instances, \"my-company-name-dev\" or \"my-company-name-prod to differentiate instances.\n\n### Version\n\n- `VERSION_TAG`: \"latest\" or a specific version tag. Tonic's tag convention is just the release number. For example, \"123\". Release notes are available on the [Tonic website](https://www.tonic.ai/product-release-notes/structural).\n\n### Tonic Administrators\n\n- `TONIC_ADMINISTRATORS`: Optional. See: https://docs.tonic.ai/app/the-tonic-platform/admin-users\n\n### Application Database\nThe connection details for the Postgres metadata/application database which holds Tonic's state (user accounts, workspaces, etc.).\n\n- `TONIC_DB_HOST`\n- `TONIC_DB_PORT`\n- `TONIC_DB_DATABASE`\n- `TONIC_DB_USERNAME`\n- `TONIC_DB_PASSWORD`\n\n### Host Integration\nTonic Host Integration features for Docker Compose.  To enable these features, you will need to uncomment the relevant container in the `docker-compose.yaml` file.  You will also need to provide values in your `.env` file or if creating a new `.env` file, then uncomment the relevant section from `.template.env`.  The values that are needed are:\n\n- `TONIC_HOST_INTEGRATION`\n  - This value should be left as \"DockerCompose\"\n- `TONIC_HOST_INTEGRATION_ACL`\n  - If you rename or other change the container in the `docker-compose.yaml` file, you will need to change this setting accordingly.  Otherwise it should be left as \"http://tonic_docker_acl\".\n\n### Consistency Seed\nThis value is used to support [Consistency](https://docs.tonic.ai/app/concepts/consistency) functionality across data generations.\n\n- `TONIC_STATISTICS_SEED`: Any signed 32-bit integer, i.e. between -2147483648 and 2147483647\n\n### Ports\nThe Tonic UI is accessible by default on ports 80 (HTTP) and 443 (HTTPS). These can be changed if you prefer or need to use different ports.\n\n``` yaml\n                ports:\n                        - 80:80\n                        - 443:443\n```\n\n### Memory Limits\nThe example docker-compose.yaml file includes memory limits per container. These are a baseline recommendation assuming a host with 16gb of memory dedicated to Tonic. In some cases it may be necessary to modify these limits and increase the total memory to more than 16gb.\n\n## Deploy\nTo run Tonic, execute the `docker-compose up -d` command from within the directory containing your docker-compose.yaml file.\n\n``` shell\n$ docker-compose up -d\nCreating tonic_worker        ... done\nCreating tonic_notifications ... done\nCreating tonic_web_server    ... done\n```\n\n\n## Validate the deployment\n\nUse `docker ps` to check that containers are running:\n```\n$ docker ps\nCONTAINER ID   IMAGE                                           COMMAND                  CREATED         STATUS                   PORTS                                         NAMES\n80e549224dd5   quay.io/tonicai/tonic_worker:latest             \"/bin/sh -c 'bash st…\"   3 minutes ago   Up 3 minutes             0.0.0.0:8080-\u003e80/tcp, 0.0.0.0:4433-\u003e443/tcp   tonic_worker\nf1379937bed8   quay.io/tonicai/tonic_web_server:latest         \"/bin/sh -c 'bash st…\"   3 minutes ago   Up 3 minutes             0.0.0.0:80-\u003e80/tcp, 0.0.0.0:443-\u003e443/tcp      tonic_web_server\n932379479ce9   quay.io/tonicai/tonic_notifications:latest      \"/bin/sh -c 'sh star…\"   3 minutes ago   Up 3 minutes             0.0.0.0:7000-\u003e80/tcp, 0.0.0.0:7001-\u003e443/tcp   tonic_notifications\n```\n\nThe Tonic UI will be accessible in your browser on port 80 or 443. I.e. from the server at https://localhost:443 or http://localhost, or via the server IP/hostname or domain you are routing to the server.\n\nTonic may take a few minutes to fully startup. You can validate that it has fully started up and is in a healthy state by running `docker logs tonic_web_server | grep listening` and checking for the following output.\n\n``` shell\n$ docker logs tonic_web_server | grep listening\n[2022-02-08T16:23:15+00:00 INF Microsoft.Hosting.Lifetime] Now listening on: http://0.0.0.0:80\n[2022-02-08T16:23:15+00:00 INF Microsoft.Hosting.Lifetime] Now listening on: https://0.0.0.0:443\n```\n\n### If the Tonic UI does not load\n1. Check that Tonic is successfully connecting to the application database.\nRun `docker logs tonic_web_server | grep \"Failed to connect\"`. If you see a `Failed to connect to db during startup.  Retrying in 5 seconds...` message like below, Tonic is not able to connect to your Postgres application database. Please verify the network path between Tonic and the database as well as the connection parameters.\n\n``` shell\n$ docker logs tonic_web_server | grep \"Failed to connect\"\n[2022-02-08T16:18:26+00:00 WRN ] Failed to connect to db during startup.  Retrying in 5 seconds...\n[2022-02-08T16:18:31+00:00 WRN ] Failed to connect to db during startup.  Retrying in 5 seconds...\n[2022-02-08T16:18:36+00:00 WRN ] Failed to connect to db during startup.  Retrying in 5 seconds...\n[2022-02-08T16:18:41+00:00 WRN ] Failed to connect to db during startup.  Retrying in 5 seconds...\n```\n\n2. If Tonic appears to be running and in a healthy state but you are unable to load the UI, verify that Tonic is reachable. Common issues may be a requirement to be on a VPN or firewall rules preventing access.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonicai%2Ftonic_docker_compose","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftonicai%2Ftonic_docker_compose","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonicai%2Ftonic_docker_compose/lists"}