# # Docker service definitions for the aurweb project. # # Notable services: # - `sharness` - Run sharness test suites # - `pytest-postgres` - Run pytest suites with PostgreSQL # - `pytest-sqlite` - Run pytest suites with SQLite # - `test` - Run sharness, pytest-postgres and pytest-sqlite # - `postgres` - `port 15432` - PostgreSQL server for docker # - `ca` - Certificate Authority generation # - `git` - `port 2222` - Git over SSH server # - `fastapi` - hypercorn service for aurweb's FastAPI app # - `nginx` - `port 8444 (FastAPI) # - You can reach `nginx` via FastAPI at `https://localhost:8444/`. # CGit can be reached via the `/cgit/` request uri on either server. # # Copyright (C) 2021 aurweb Development # All Rights Reserved. version: "3.8" services: aurweb-image: build: . image: aurweb:latest ca: image: aurweb:latest init: true entrypoint: /docker/ca-entrypoint.sh command: /docker/scripts/run-ca.sh healthcheck: test: "bash /docker/health/ca.sh" interval: 3s volumes: - step:/root/.step redis: image: aurweb:latest init: true entrypoint: /docker/redis-entrypoint.sh command: /docker/scripts/run-redis.sh healthcheck: test: "bash /docker/health/redis.sh" interval: 3s ports: - "127.0.0.1:16379:6379" postgres: image: aurweb:latest init: true entrypoint: /docker/postgres-entrypoint.sh command: su postgres -c '/usr/bin/postgres -D /var/lib/postgres/data' ports: - "127.0.0.1:15432:5432" volumes: - postgres_run:/run/postgresql - postgres_data:/var/lib/postgres healthcheck: test: "bash /docker/health/postgres.sh" interval: 3s shm_size: 2gb postgres_init: image: aurweb:latest init: true environment: - AUR_CONFIG_IMMUTABLE=${AUR_CONFIG_IMMUTABLE:-0} entrypoint: /docker/postgres-init-entrypoint.sh command: echo "Postgres tables initialized." volumes: - postgres_run:/run/postgresql depends_on: postgres: condition: service_healthy git: image: aurweb:latest init: true environment: - AUR_CONFIG=/aurweb/conf/config - SSH_CMDLINE=${SSH_CMDLINE:-ssh ssh://aur@localhost:2222} - AUR_CONFIG_IMMUTABLE=${AUR_CONFIG_IMMUTABLE:-0} entrypoint: /docker/git-entrypoint.sh command: /docker/scripts/run-sshd.sh ports: - "2222:2222" healthcheck: test: "bash /docker/health/sshd.sh" interval: 3s depends_on: postgres_init: condition: service_started volumes: - postgres_run:/run/postgresql smartgit: image: aurweb:latest init: true environment: - AUR_CONFIG=/aurweb/conf/config entrypoint: /docker/smartgit-entrypoint.sh command: /docker/scripts/run-smartgit.sh healthcheck: test: "bash /docker/health/smartgit.sh" interval: 3s cgit-fastapi: image: aurweb:latest init: true environment: - AUR_CONFIG=/aurweb/conf/config - CGIT_CLONE_PREFIX=${AURWEB_FASTAPI_PREFIX} - CGIT_CSS=/static/css/cgit.css entrypoint: /docker/cgit-entrypoint.sh command: /docker/scripts/run-cgit.sh 3000 healthcheck: test: "bash /docker/health/cgit.sh 3000" interval: 3s depends_on: git: condition: service_healthy ports: - "127.0.0.1:13001:3000" volumes: - git_data:/aurweb/aur.git cron: image: aurweb:latest init: true environment: - AUR_CONFIG=/aurweb/conf/config - AUR_CONFIG_IMMUTABLE=${AUR_CONFIG_IMMUTABLE:-0} entrypoint: /docker/cron-entrypoint.sh command: /docker/scripts/run-cron.sh depends_on: postgres_init: condition: service_started volumes: - ./aurweb:/aurweb/aurweb - postgres_run:/run/postgresql - archives:/var/lib/aurweb/archives fastapi: image: aurweb:latest init: true environment: - AUR_CONFIG=conf/config - FASTAPI_BACKEND=${FASTAPI_BACKEND} - FASTAPI_WORKERS=${FASTAPI_WORKERS} - AURWEB_FASTAPI_PREFIX=${AURWEB_FASTAPI_PREFIX} - AURWEB_SSHD_PREFIX=${AURWEB_SSHD_PREFIX} - PROMETHEUS_MULTIPROC_DIR=/tmp_prometheus - AUR_CONFIG_IMMUTABLE=${AUR_CONFIG_IMMUTABLE:-0} entrypoint: /docker/fastapi-entrypoint.sh command: /docker/scripts/run-fastapi.sh "${FASTAPI_BACKEND}" healthcheck: test: "bash /docker/health/fastapi.sh ${FASTAPI_BACKEND}" interval: 3s depends_on: git: condition: service_healthy redis: condition: service_healthy cron: condition: service_started volumes: - archives:/var/lib/aurweb/archives - postgres_run:/run/postgresql ports: - "127.0.0.1:18000:8000" nginx: image: aurweb:latest init: true environment: - AUR_CONFIG=conf/config entrypoint: /docker/nginx-entrypoint.sh command: /docker/scripts/run-nginx.sh ports: - "127.0.0.1:8444:8444" # FastAPI healthcheck: test: "bash /docker/health/nginx.sh" interval: 3s depends_on: ca: condition: service_healthy cgit-fastapi: condition: service_healthy smartgit: condition: service_healthy fastapi: condition: service_healthy sharness: image: aurweb:latest profiles: ["dev"] init: true environment: - AUR_CONFIG=conf/config.sqlite - LOG_CONFIG=logging.test.conf entrypoint: /docker/sharness-entrypoint.sh command: /docker/scripts/run-sharness.sh stdin_open: true tty: true depends_on: postgres: condition: service_healthy volumes: - ./data:/data - ./aurweb:/aurweb/aurweb - ./migrations:/aurweb/migrations - ./test:/aurweb/test - ./templates:/aurweb/templates pytest-postgres: image: aurweb:latest profiles: ["dev"] init: true environment: - AUR_CONFIG=conf/config - TEST_RECURSION_LIMIT=${TEST_RECURSION_LIMIT} - PROMETHEUS_MULTIPROC_DIR=/tmp_prometheus - LOG_CONFIG=logging.test.conf entrypoint: /docker/test-postgres-entrypoint.sh command: /docker/scripts/run-pytests.sh clean stdin_open: true tty: true depends_on: postgres: condition: service_healthy tmpfs: - /tmp volumes: - postgres_run:/run/postgresql - ./data:/data - ./aurweb:/aurweb/aurweb - ./migrations:/aurweb/migrations - ./test:/aurweb/test - ./templates:/aurweb/templates test: image: aurweb:latest profiles: ["dev"] init: true environment: - AUR_CONFIG=conf/config - TEST_RECURSION_LIMIT=${TEST_RECURSION_LIMIT} - PROMETHEUS_MULTIPROC_DIR=/tmp_prometheus - LOG_CONFIG=logging.test.conf entrypoint: /docker/test-postgres-entrypoint.sh command: /docker/scripts/run-tests.sh stdin_open: true tty: true depends_on: postgres: condition: service_healthy volumes: - postgres_run:/run/postgresql - ./data:/data - ./aurweb:/aurweb/aurweb - ./migrations:/aurweb/migrations - ./test:/aurweb/test - ./templates:/aurweb/templates volumes: postgres_run: {} postgres_data: {} git_data: {} # Share aurweb/aur.git smartgit_run: {} archives: {} step: {}