Metatron_Student_ERP/deploy/docker-compose.prod.yml

88 lines
2.0 KiB
YAML

services:
db:
image: postgres:15-alpine
container_name: metatron_erp_db_prod
restart: always
environment:
POSTGRES_DB: ${POSTGRES_DB:-metatron_aca_erp}
POSTGRES_USER: ${POSTGRES_USER:-odoo}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- prod_pgdata:/var/lib/postgresql/data
networks:
- internal_network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-odoo} -d ${POSTGRES_DB:-metatron_aca_erp}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "5"
odoo:
image: odoo:19.0
container_name: metatron_erp_app_prod
restart: always
depends_on:
db:
condition: service_healthy
environment:
HOST: db
PORT: 5432
USER: ${POSTGRES_USER:-odoo}
PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- prod_odoo_data:/var/lib/odoo
- ../addons:/mnt/extra-addons:ro
- ./odoo.prod.conf:/etc/odoo/odoo.conf:ro
command: odoo -c /etc/odoo/odoo.conf
networks:
- internal_network
- proxy_network
healthcheck:
test: ["CMD-SHELL", "curl -f http://127.0.0.1:8069/web/health || exit 1"]
interval: 15s
timeout: 10s
retries: 5
start_period: 30s
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "5"
nginx:
image: nginx:alpine
container_name: metatron_erp_nginx_prod
restart: always
depends_on:
odoo:
condition: service_healthy
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/metatron_erp.conf:/etc/nginx/conf.d/default.conf:ro
- ./certs:/etc/nginx/certs:ro
networks:
- proxy_network
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "5"
networks:
internal_network:
internal: true
proxy_network:
driver: bridge
volumes:
prod_pgdata:
prod_odoo_data: