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"