79 lines
2.3 KiB
YAML
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:
|