Files
diarios_oficiais_search_alems/docker-compose.local.yml

90 lines
2.9 KiB
YAML

version: '3.8'
volumes:
diarios_oficiais_search_alems_local_postgres_data: {}
diarios_oficiais_search_alems_local_postgres_data_backups: {}
staticfiles:
media:
esdata:
services:
traefik:
env_file:
- ./.envs/.local/.traefik
image: traefik:v2.11
container_name: traefik
command:
- --api.insecure=true
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
# Adicionar logs para debug (opcional)
- --log.level=INFO
- --accesslog=true
ports:
- "80:80"
- "8080:8080" # Dashboard
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
django:
build:
context: .
dockerfile: ./compose/local/django/Dockerfile
image: diarios_oficiais_search_alems_local_django
container_name: diarios_oficiais_search_alems_local_django
depends_on:
- postgres
volumes:
- .:/app:z
- staticfiles:/app/staticfiles
- media:/app/diarios_oficiais_search_alems/media
env_file:
- ./.envs/.local/.django
- ./.envs/.local/.postgres
- ./.envs/.local/.traefik
labels:
- "traefik.enable=true"
# Rota principal - captura tudo exceto /media/ e /static/
- "traefik.http.routers.django.rule=Host(`${TRAEFIK_HOST}`) && !PathPrefix(`/media/`) && !PathPrefix(`/static/`)"
- "traefik.http.routers.django.entrypoints=web"
- "traefik.http.services.django.loadbalancer.server.port=8000"
# Prioridade maior para ser avaliada primeiro
- "traefik.http.routers.django.priority=100"
ports:
- '8000:8000'
command: /start
postgres:
build:
context: .
dockerfile: ./compose/production/postgres/Dockerfile
image: diarios_oficiais_search_alems_production_postgres
container_name: diarios_oficiais_search_alems_local_postgres
volumes:
- diarios_oficiais_search_alems_local_postgres_data:/var/lib/postgresql/data
- diarios_oficiais_search_alems_local_postgres_data_backups:/backups
env_file:
- ./.envs/.local/.postgres
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.17.3
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
volumes:
- esdata:/usr/share/elasticsearch/data
media-server:
image: nginx:alpine
volumes:
- media:/usr/share/nginx/html/media:ro
- staticfiles:/usr/share/nginx/html/static:ro
labels:
- "traefik.enable=true"
# Rota específica para arquivos estáticos e media
- "traefik.http.routers.media.rule=Host(`${TRAEFIK_HOST}`) && (PathPrefix(`/media/`) || PathPrefix(`/static/`))"
- "traefik.http.routers.media.entrypoints=web"
- "traefik.http.services.media.loadbalancer.server.port=80"
# Prioridade menor para ser avaliada depois
- "traefik.http.routers.media.priority=200"