--- version: '3' services: api: build: context: . dockerfile: taskcluster/docker/shipit/Dockerfile args: APP_TYPE: admin SRC: . UV_VERSION: 0.7.9 PYTHON_VERSION: 3.12 ports: - "8015:8015" # Mounting these three specific volumes is done to ensure that autoreloading # changes to python code works without breaking the console scripts that # are installed. If we mount the entire `api` directory, it overwrites # the egg files that are inside the docker containers, which means that # scripts like `shipit_trigger_product_details` do not work. # If we don't volume mount at all, python code changes are not picked up # until we rebuild the docker container volumes: - ./api/src/backend_common:/app/api/src/backend_common - ./api/src/cli_common:/app/api/src/cli_common - ./api/src/shipit_api:/app/api/src/shipit_api - "./api/products.yml:/app/api/products.yml" - "./api/trust-domains.yml:/app/api/trust-domains.yml" environment: - HOST=0.0.0.0 - PORT=8015 - APP_CHANNEL=local - DATABASE_URL=postgresql://shipituser:shipitpassword@db/shipitdb - AUTH_CLIENT_ID=todo - AUTH_CLIENT_SECRET=todo - AUTH_DOMAIN=auth.mozilla.auth0.com - SECRET_KEY_BASE64=bm90YXNlY3JldA== # notasecret - TASKCLUSTER_CLIENT_ID - TASKCLUSTER_ACCESS_TOKEN - TASKCLUSTER_ROOT_URL=https://firefox-ci-tc.services.mozilla.com - GITHUB_TOKEN - GITHUB_SKIP_PRIVATE_REPOS=1 - XPI_MANIFEST_OWNER=mozilla-releng - XPI_MANIFEST_REPO=staging-xpi-manifest - LOG_FORMAT=plain depends_on: - db healthcheck: test: ["CMD", "curl", "-fk", "https://localhost:8015/__heartbeat__"] interval: 10s timeout: 5s retries: 5 public: build: context: . dockerfile: taskcluster/docker/shipit/Dockerfile args: APP_TYPE: public SRC: . UV_VERSION: 0.7.9 PYTHON_VERSION: 3.12 ports: - "8016:8016" # See comment on the api container for the reasoning behind these mounts volumes: - ./api/src/backend_common:/app/api/src/backend_common - ./api/src/cli_common:/app/api/src/cli_common - ./api/src/shipit_api:/app/api/src/shipit_api - "./api/products.yml:/app/api/products.yml" environment: - HOST=0.0.0.0 - PORT=8016 - APP_CHANNEL=local - DATABASE_URL=postgresql://shipituserreadonly:shipitpasswordreadonly@db/shipitdb - LOG_FORMAT=plain depends_on: - db - api db: image: postgres:15@sha256:5f07e69ced9ee30ec814cd12c555694276bb1d520e971205f39a833362748a3c ports: - "5432:5432" volumes: - dbstore:/var/lib/postgresql/data - ./api/docker.d/postgres_create_readonly_user.sh:/docker-entrypoint-initdb.d/postgres_create_readonly_user.sh environment: - POSTGRES_USER=shipituser - POSTGRES_PASSWORD=shipitpassword - POSTGRES_DB=shipitdb healthcheck: test: ["CMD-SHELL", "-c", "pg_isready -U shipituser -d shipitdb"] interval: 10s timeout: 5s retries: 5 ui: image: node:24@sha256:b2b2184ba9b78c022e1d6a7924ec6fba577adf28f15c9d9c457730cc4ad3807a ports: - "8010:8010" volumes: - ./frontend:/app - node_modules:/app/node_modules environment: - HOST=0.0.0.0 - PORT=8010 - SHIPIT_API_URL=https://localhost:8015 - SHIPIT_PUBLIC_API_URL=https://localhost:8016 - DEPLOYMENT_BRANCH=local - FRONTEND_TASKCLUSTER_ROOT_URL=https://firefox-ci-tc.services.mozilla.com entrypoint: - /bin/bash - --login - -c - cd /app && yarn install && yarn start # TODO: worker, maybe pulse? volumes: dbstore: node_modules: