version: '3.4' x-cache: &cache cache_from: - ${CONTAINER_REGISTRY_BASE}/php - ${CONTAINER_REGISTRY_BASE}/nginx - ${CONTAINER_REGISTRY_BASE}/varnish services: php: image: ${CONTAINER_REGISTRY_BASE}/php build: context: ./api target: api_platform_php <<: *cache depends_on: - db # Comment out these volumes in production volumes: - ./api:/srv/api:rw,cached # If you develop on Linux, uncomment the following line to use a bind-mounted host directory instead # - ./api/var:/srv/api/var:rw api: image: ${CONTAINER_REGISTRY_BASE}/nginx build: context: ./api target: api_platform_nginx <<: *cache depends_on: - php # Comment out this volume in production volumes: - ./api/public:/srv/api/public:ro ports: - "8080:80" cache-proxy: image: ${CONTAINER_REGISTRY_BASE}/varnish build: context: ./api target: api_platform_varnish <<: *cache depends_on: - api volumes: - ./api/docker/varnish/conf:/usr/local/etc/varnish:ro tmpfs: - /usr/local/var/varnish:exec ports: - "8081:80" db: # In production, you may want to use a managed database service image: postgres:10-alpine environment: - POSTGRES_DB=api - POSTGRES_USER=api-platform # You should definitely change the password in production - POSTGRES_PASSWORD=!ChangeMe! volumes: - db-data:/var/lib/postgresql/data:rw # You may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data! # - ./docker/db/data:/var/lib/postgresql/data:rw ports: - "5432:5432" mercure: # In production, you may want to use the managed version of Mercure, https://mercure.rocks image: dunglas/mercure environment: # You should definitely change all these values in production - JWT_KEY=!UnsecureChangeMe! - ALLOW_ANONYMOUS=1 - CORS_ALLOWED_ORIGINS=* - PUBLISH_ALLOWED_ORIGINS=http://localhost:1337,https://localhost:1338 - DEMO=1 ports: - "1337:80" client: # Use a static website hosting service in production # See https://facebook.github.io/create-react-app/docs/deployment image: ${CONTAINER_REGISTRY_BASE}/client build: context: ./client cache_from: - ${CONTAINER_REGISTRY_BASE}/client env_file: - ./client/.env volumes: - ./client:/usr/src/client:rw,cached - /usr/src/client/node_modules ports: - "80:3000" admin: # Use a static website hosting service in production # See https://facebook.github.io/create-react-app/docs/deployment image: ${CONTAINER_REGISTRY_BASE}/admin build: context: ./admin cache_from: - ${CONTAINER_REGISTRY_BASE}/admin volumes: - ./admin:/usr/src/admin:rw,cached - /usr/src/admin/node_modules ports: - "81:3000" h2-proxy: # Don't use this proxy in prod build: context: ./h2-proxy depends_on: - client - admin - api - cache-proxy ports: - "443:443" - "444:444" - "8443:8443" - "8444:8444" volumes: db-data: {}