x-logging: &default-logging driver: "json-file" options: max-size: "${LOG_MAX_SIZE:-20m}" max-file: "${LOG_MAX_FILE:-10}" compress: "true" services: caddy: image: {{ infisical_caddy_image }} restart: unless-stopped volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data ports: - 443:443 environment: - BASE_URL=infisical.futureporn.net logging: *default-logging networks: - infisical backend: container_name: infisical-backend image: infisical/infisical:{{ infisical_docker_tag }} restart: unless-stopped depends_on: db: condition: service_healthy redis: condition: service_started db-migration: condition: service_completed_successfully pull_policy: always env_file: .env environment: - NODE_ENV=production ports: - 80:8080 networks: - infisical redis: container_name: infisical-redis image: redis restart: unless-stopped env_file: .env environment: - ALLOW_EMPTY_PASSWORD=yes volumes: - ./volumes/redis:/data networks: - infisical db: container_name: infisical-db image: postgres:14-alpine restart: unless-stopped env_file: .env volumes: - ./volumes/postgres:/var/lib/postgresql/data networks: - infisical healthcheck: test: "pg_isready --username=${POSTGRES_USER} && psql --username=${POSTGRES_USER} --list" interval: 5s timeout: 10s retries: 10 db-migration: container_name: infisical-db-migration depends_on: db: condition: service_healthy image: infisical/infisical:{{ infisical_docker_tag }} env_file: .env command: npm run migration:latest pull_policy: always networks: - infisical networks: infisical: volumes: caddy_data: null