EcoSpecies-Atlas/docker-compose.yml

79 lines
2.3 KiB
YAML

services:
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: ecospecies
POSTGRES_USER: ecospecies
POSTGRES_PASSWORD: ecospecies
PGDATA: /var/lib/postgresql/data/pgdata
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ecospecies -d ecospecies"]
interval: 5s
timeout: 5s
retries: 10
ports:
- "${ECOSPECIES_DB_PORT:-5432}:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
importer:
image: python:3.12-slim
depends_on:
db:
condition: service_healthy
working_dir: /workspace
environment:
ECOSPECIES_DATA_DIR: /legacy-data/InputFiles - TXT
ECOSPECIES_DATABASE_URL: postgresql+psycopg://ecospecies:ecospecies@db:5432/ecospecies
ECOSPECIES_VENV_DIR: /workspace/.docker/venv
PYTHONPATH: /workspace/apps/api/src
command: ["/bin/sh", "-lc", "./scripts/bootstrap-python-env.sh && ./scripts/run-import.sh"]
volumes:
- .:/workspace
- ../01-legacy-code-and-data:/legacy-data:ro
- python_venv:/workspace/.docker/venv
- pip_cache:/root/.cache/pip
api:
image: python:3.12-slim
restart: unless-stopped
depends_on:
db:
condition: service_healthy
importer:
condition: service_completed_successfully
working_dir: /workspace
environment:
ECOSPECIES_DATA_DIR: /legacy-data/InputFiles - TXT
ECOSPECIES_DATABASE_URL: postgresql+psycopg://ecospecies:ecospecies@db:5432/ecospecies
ECOSPECIES_HOST: 0.0.0.0
ECOSPECIES_PORT: "8000"
ECOSPECIES_AUTH_TOKENS: ${ECOSPECIES_AUTH_TOKENS:-}
ECOSPECIES_VENV_DIR: /workspace/.docker/venv
PYTHONPATH: /workspace/apps/api/src
command: ["/bin/sh", "-lc", "./scripts/bootstrap-python-env.sh && ./scripts/run-api.sh"]
ports:
- "${ECOSPECIES_API_PORT:-8000}:8000"
volumes:
- .:/workspace
- ../01-legacy-code-and-data:/legacy-data:ro
- python_venv:/workspace/.docker/venv
- pip_cache:/root/.cache/pip
web:
image: nginx:1.27-alpine
restart: unless-stopped
depends_on:
api:
condition: service_started
ports:
- "${ECOSPECIES_WEB_PORT:-8080}:80"
volumes:
- ./apps/web:/usr/share/nginx/html:ro
- ./apps/web/nginx.conf:/etc/nginx/conf.d/default.conf:ro
volumes:
postgres_data:
python_venv:
pip_cache: