version: '3.4' services: # mongodb: # image: bitnami/mongodb:latest # ports: # - "27017" # volumes: # - data:/bitnami/mongodb # redis: # image: redis:6.2-alpine # hostname: redis # container_name: redis # command: # - 'redis-server' # - '--requirepass myStrongPassword' # ports: # - 36379:6379 # restart: always # deploy: # placement: # constraints: # - "node.labels.type==queue" # restart_policy: # condition: on-failure # delay: 5s # max_attempts: 3 # window: 120s # update_config: # parallelism: 2 # delay: 10s # order: stop-first # rollback_config: # parallelism: 2 # delay: 10s # order: stop-first db: container_name: db image: postgres:12 restart: always volumes: - app-db-data:/var/lib/postgresql/data/pgdata env_file: - .env networks: - traefik-public ports: - 5432:5432 environment: - PGDATA=/var/lib/postgresql/data/pgdata - POSTGRES_PASSWORD=${POSTGRES_PASSWORD?Variable not set} - POSTGRES_USER=${POSTGRES_USER?Variable not set} - POSTGRES_DB=${POSTGRES_DB?Variable not set} adminer: container_name: db-adminer image: adminer restart: always networks: - traefik-public depends_on: - db environment: - ADMINER_DESIGN=pepa-linha-dark labels: - traefik.enable=true - traefik.docker.network=traefik-public - traefik.constraint-label=traefik-public - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-http.rule=Host(`adminer.${DOMAIN?Variable not set}`) - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-http.entrypoints=http - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-http.middlewares=https-redirect - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-https.rule=Host(`adminer.${DOMAIN?Variable not set}`) - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-https.entrypoints=https - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-https.tls=true - traefik.http.routers.${STACK_NAME?Variable not set}-adminer-https.tls.certresolver=le - traefik.http.services.${STACK_NAME?Variable not set}-adminer.loadbalancer.server.port=8080 ports: - 8081:8080 # backend: # container_name: backend # image: 'jianboy/${DOCKER_IMAGE_BACKEND?Variable not set}:${TAG-latest}' # build: # context: ./backend # dockerfile: ./Dockerfile # args: # INSTALL_DEV: ${INSTALL_DEV-false} # volumes: # - ./backend:/app # restart: always # # command: ["sh", "-c", "pip install debugpy -t /tmp && python /tmp/debugpy --wait-for-client --listen 0.0.0.0:5678 -m flask run --no-debugger --no-reload --host 0.0.0.0 --port 5002"] # networks: # - traefik-public # depends_on: # - db # ports: # - 8080:8080 # env_file: # - .env # environment: # - DOMAIN=${DOMAIN} # - ENVIRONMENT=${ENVIRONMENT} # - BACKEND_CORS_ORIGINS=${BACKEND_CORS_ORIGINS} # - SECRET_KEY=${SECRET_KEY?Variable not set} # - FIRST_SUPERUSER=${FIRST_SUPERUSER?Variable not set} # - FIRST_SUPERUSER_PASSWORD=${FIRST_SUPERUSER_PASSWORD?Variable not set} # - USERS_OPEN_REGISTRATION=${USERS_OPEN_REGISTRATION} # - SMTP_HOST=${SMTP_HOST} # - SMTP_USER=${SMTP_USER} # - SMTP_PASSWORD=${SMTP_PASSWORD} # - EMAILS_FROM_EMAIL=${EMAILS_FROM_EMAIL} # - POSTGRES_SERVER=db # - POSTGRES_PORT=${POSTGRES_PORT} # - POSTGRES_DB=${POSTGRES_DB} # - POSTGRES_USER=${POSTGRES_USER?Variable not set} # - POSTGRES_PASSWORD=${POSTGRES_PASSWORD?Variable not set} # - SENTRY_DSN=${SENTRY_DSN} # platform: linux/amd64 # Patch for M1 Mac # labels: # - traefik.enable=true # - traefik.docker.network=traefik-public # - traefik.constraint-label=traefik-public # - traefik.http.services.${STACK_NAME?Variable not set}-backend.loadbalancer.server.port=80 # - traefik.http.routers.${STACK_NAME?Variable not set}-backend-http.rule=Host(`${DOMAIN?Variable not set}`, `www.${DOMAIN?Variable not set}`) && PathPrefix(`/api`, `/docs`, `/redoc`) # - traefik.http.routers.${STACK_NAME?Variable not set}-backend-http.entrypoints=http # - traefik.http.routers.${STACK_NAME?Variable not set}-backend-https.rule=Host(`${DOMAIN?Variable not set}`, `www.${DOMAIN?Variable not set}`) && PathPrefix(`/api`, `/docs`, `/redoc`) # - traefik.http.routers.${STACK_NAME?Variable not set}-backend-https.entrypoints=https # - traefik.http.routers.${STACK_NAME?Variable not set}-backend-https.tls=true # - traefik.http.routers.${STACK_NAME?Variable not set}-backend-https.tls.certresolver=le # - traefik.http.routers.${STACK_NAME?Variable not set}-backend-http.middlewares=https-redirect,${STACK_NAME?Variable not set}-www-redirect # - traefik.http.routers.${STACK_NAME?Variable not set}-backend-https.middlewares=${STACK_NAME?Variable not set}-www-redirect # frontend: # container_name: frontend # image: 'jianboy/${DOCKER_IMAGE_FRONTEND?Variable not set}:${TAG-latest}' # restart: always # networks: # - traefik-public # ports: # - 8082:80 # build: # context: ./frontend # dockerfile: ./Dockerfile # args: # - VITE_API_URL=https://${DOMAIN?Variable not set} # - NODE_ENV=production # labels: # - traefik.enable=true # - traefik.docker.network=traefik-public # - traefik.constraint-label=traefik-public # - traefik.http.services.${STACK_NAME?Variable not set}-frontend.loadbalancer.server.port=80 # - traefik.http.routers.${STACK_NAME?Variable not set}-frontend-http.rule=Host(`${DOMAIN?Variable not set}`, `www.${DOMAIN?Variable not set}`) # - traefik.http.routers.${STACK_NAME?Variable not set}-frontend-http.entrypoints=http # - traefik.http.routers.${STACK_NAME?Variable not set}-frontend-https.rule=Host(`${DOMAIN?Variable not set}`, `www.${DOMAIN?Variable not set}`) # - traefik.http.routers.${STACK_NAME?Variable not set}-frontend-https.entrypoints=https # - traefik.http.routers.${STACK_NAME?Variable not set}-frontend-https.tls=true # - traefik.http.routers.${STACK_NAME?Variable not set}-frontend-https.tls.certresolver=le # # Handle domain with and without "www" to redirect to only one # # To disable www redirection remove the next line # - traefik.http.middlewares.${STACK_NAME?Variable not set}-www-redirect.redirectregex.regex=^http(s)?://www.(${DOMAIN?Variable not set})/(.*) # # Redirect a domain with www to non-www # # To disable it remove the next line # - traefik.http.middlewares.${STACK_NAME?Variable not set}-www-redirect.redirectregex.replacement=http$${1}://${DOMAIN?Variable not set}/$${3} # # Middleware to redirect www, to disable it remove the next line # - traefik.http.routers.${STACK_NAME?Variable not set}-frontend-https.middlewares=${STACK_NAME?Variable not set}-www-redirect # # Middleware to redirect www, and redirect HTTP to HTTPS # # to disable www redirection remove the section: ${STACK_NAME?Variable not set}-www-redirect, # - traefik.http.routers.${STACK_NAME?Variable not set}-frontend-http.middlewares=https-redirect,${STACK_NAME?Variable not set}-www-redirect volumes: app-db-data: networks: traefik-public: # external: true