services: cloudflared: image: cloudflare/cloudflared:latest container_name: cloudflared restart: unless-stopped command: tunnel --no-autoupdate run environment: TUNNEL_TOKEN: ${CLOUDFLARE_TUNNEL_TOKEN} REAL_IP_HEADER: Cf-Connecting-Ip depends_on: - nginx nginx: image: nginx:1 container_name: nginx restart: unless-stopped volumes: - ./nginx.conf:/etc/nginx/nginx.conf depends_on: - strapi strapi: container_name: strapi build: context: . dockerfile: Dockerfile restart: unless-stopped environment: NODE_ENV: production DATABASE_CLIENT: postgres DATABASE_HOST: postgres DATABASE_PORT: 5432 DATABASE_NAME: strapi DATABASE_USERNAME: strapi DATABASE_PASSWORD: ${DATABASE_PASSWORD} APP_KEYS: ${APP_KEYS} JWT_SECRET: ${JWT_SECRET} API_TOKEN_SALT: ${API_TOKEN_SALT} TRANSFER_TOKEN_SALT: ${TRANSFER_TOKEN_SALT} ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET} AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID} AWS_ACCESS_SECRET: ${AWS_ACCESS_SECRET} AWS_REGION: ${AWS_REGION} AWS_BUCKET: ${AWS_BUCKET} CDN_URL: ${CDN_URL} CDN_ROOT_PATH: ${CDN_ROOT_PATH} volumes: - ./config:/opt/app/config - ./src:/opt/app/src - ./package.json:/opt/package.json - ./package-lock.json:/opt/package-lock.json - ./public/uploads:/opt/app/public/uploads depends_on: - postgres postgres: container_name: strapi-postgres image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: strapi POSTGRES_DB: strapi POSTGRES_PASSWORD: ${DATABASE_PASSWORD} volumes: - "strapi_postgres_data:/var/lib/postgresql/data" volumes: postgres_data: