diff --git a/docker/compose.yml b/docker/compose.yml index ea52a53..f873bab 100644 --- a/docker/compose.yml +++ b/docker/compose.yml @@ -4,75 +4,109 @@ services: context: .. dockerfile: docker/Dockerfile.debian-stable-slim container_name: lista-zakupow-app + + env_file: + - ../.env + expose: - "${APP_PORT:-8000}" + healthcheck: test: - [ - "CMD", - "python", - "-c", - "import urllib.request; import sys; req = urllib.request.Request('http://localhost:${APP_PORT:-8000}/healthcheck', headers={'X-Internal-Check': '${HEALTHCHECK_TOKEN}'}); sys.exit(0) if urllib.request.urlopen(req).getcode() == 200 else sys.exit(1)", - ] + - CMD + - python + - -c + - >- + import os, sys, urllib.request; + port = os.environ["APP_PORT"]; + token = os.environ["HEALTHCHECK_TOKEN"]; + req = urllib.request.Request( + "http://127.0.0.1:" + port + "/healthcheck", + headers={"X-Internal-Check": token}); + response = urllib.request.urlopen(req, timeout=5); + sys.exit(0 if response.status == 200 else 1) interval: 30s timeout: 10s retries: 3 - start_period: 10s - env_file: - - ../.env + start_period: 20s + volumes: - ../:/app - ../uploads:/app/uploads - ../instance:/app/instance + networks: - lista-zakupow_network + restart: unless-stopped varnish: - image: varnish:latest + image: varnish:9.0 container_name: lista-zakupow-varnish + depends_on: app: condition: service_healthy + ports: - "${APP_PORT:-8000}:80" + volumes: - ../deploy/varnish/default.vcl:/etc/varnish/default.vcl:ro + environment: - - VARNISH_SIZE=256m + VARNISH_SIZE: 256m + networks: - lista-zakupow_network + restart: unless-stopped mysql: image: mysql:8 container_name: lista-zakupow-mysql-db + + env_file: + - ../.env + environment: - MYSQL_DATABASE: ${DB_NAME} - MYSQL_USER: ${DB_USER} - MYSQL_PASSWORD: ${DB_PASSWORD} - MYSQL_ROOT_PASSWORD: 89o38kUX5T4C + MYSQL_DATABASE: "${DB_NAME}" + MYSQL_USER: "${DB_USER}" + MYSQL_PASSWORD: "${DB_PASSWORD}" + MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}" + volumes: - ../db/mysql:/var/lib/mysql - restart: unless-stopped + networks: - lista-zakupow_network - profiles: ["mysql"] + + restart: unless-stopped + profiles: + - mysql pgsql: image: postgres:18 container_name: lista-zakupow-pgsql + + env_file: + - ../.env + environment: - POSTGRES_DB: ${DB_NAME} - POSTGRES_USER: ${DB_USER} - POSTGRES_PASSWORD: ${DB_PASSWORD} - PGDATA: /var/lib/postgresql + POSTGRES_DB: "${DB_NAME}" + POSTGRES_USER: "${DB_USER}" + POSTGRES_PASSWORD: "${DB_PASSWORD}" + PGDATA: /var/lib/postgresql/data + volumes: - - ../db/pgsql:/var/lib/postgresql + - ../db/pgsql:/var/lib/postgresql/data + networks: - lista-zakupow_network + restart: unless-stopped - profiles: ["pgsql"] + profiles: + - pgsql networks: lista-zakupow_network: