90 lines
2.9 KiB
YAML
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"
|