felicity-lims/docker-compose.prod.yml
2024-04-12 17:14:48 +02:00

192 lines
4 KiB
YAML

version: '3.8'
volumes:
db-data:
pgadmin:
caddy_data:
caddy_config:
networks:
felicitynet:
driver: bridge
services:
felicity_aio_caddy:
container_name: felicity_aio_caddy
restart: unless-stopped
image: caddy:2-alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./services/caddy/proxy/Caddyfile:/etc/caddy/Caddyfile
- ./caddy.data:/data
- ./caddy.config:/config
environment:
PROXY_BACKEND: felicity_aio
PROXY_PORT: 8000
SERVER_HOST: ${SERVER_HOST}
depends_on:
- felicity_aio
networks:
- felicitynet
felicity_aio_nginx:
container_name: felicity_aio_nginx
image: nginx:latest
ports:
- "80:80"
environment:
PROXY_BACKEND: felicity_aio
PROXY_PORT: 8000
SERVER_HOST: ${SERVER_HOST}
volumes:
- ./services/nginx/proxy/:/etc/nginx/templates/
depends_on:
- felicity_aio
networks:
- felicitynet
logging:
options:
max-size: 10m
max-file: 5
felicity_aio:
container_name: felicity_aio
image: felicity_aio:1.0.0
restart: unless-stopped
env_file:
- .env
environment:
POSTGRES_SERVER: felicity_db
SERVE_WEBAPP: True
volumes:
- ./felicity:/app/felicity
build:
context: ./
target: server-aio
dockerfile: Dockerfile.prod
ports:
- 8000:8000
networks:
- felicitynet
depends_on:
- felicity_db
logging:
options:
max-size: 10m
max-file: 5
felicity_static_caddy:
container_name: felicity_static_caddy
restart: unless-stopped
build:
context: ./
target: caddy-static
dockerfile: Dockerfile.prod
ports:
- "80:80"
- "443:443"
volumes:
- ./services/caddy/static/Caddyfile:/etc/caddy/Caddyfile
- ./caddy.data:/data
- ./caddy.config:/config
environment:
PROXY_BACKEND: felicity_api
PROXY_PORT: 8000
SERVER_HOST: ${SERVER_HOST}
depends_on:
- felicity_api
networks:
- felicitynet
logging:
options:
max-size: 10m
max-file: 5
felicity_static_nginx:
container_name: felicity_static_nginx
restart: unless-stopped
build:
context: ./
target: nginx-static
dockerfile: Dockerfile.prod
ports:
- "80:80"
environment:
PROXY_BACKEND: felicity_api
PROXY_PORT: 8000
SERVER_HOST: ${SERVER_HOST}
volumes:
- ./services/nginx/static/:/etc/nginx/templates/
depends_on:
- felicity_api
networks:
- felicitynet
logging:
options:
max-size: 10m
max-file: 5
felicity_api:
container_name: felicity_api
image: felicity_api:1.0.0
restart: unless-stopped
env_file:
- .env
environment:
POSTGRES_SERVER: felicity_db
SERVE_WEBAPP: False
volumes:
- ./felicity:/app/felicity
build:
context: ./
target: server-api
dockerfile: Dockerfile.prod
ports:
- 8000:8000
networks:
- felicitynet
depends_on:
- felicity_db
logging:
options:
max-size: 10m
max-file: 5
felicity_db:
container_name: felicity_db
image: postgres:12
restart: unless-stopped
env_file:
- .env
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_HOST_AUTH_METHOD: trust
volumes:
- ./postgres/init/:/docker-entrypoint-initdb.d/
- ./db-data:/var/lib/postgresql/data
ports:
- 5434:5432
networks:
- felicitynet
pgadmin:
container_name: felicity.pgadmin
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-admin@pgadmin.org}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
volumes:
- ./pgadmin:/root/.pgadmin
ports:
- "${PGADMIN_PORT:-5050}:80"
networks:
- felicitynet
restart: unless-stopped
depends_on:
- felicity_db