services: app: # Lighweight proxy to bridge Traefik to local host (HMR support) image: alpine/socat restart: always command: tcp-listen:3000,fork,reuseaddr tcp:host.docker.internal:3000 extra_hosts: - "host.docker.internal:host-gateway" networks: - default - infra labels: - "traefik.enable=true" - 'traefik.http.routers.${PROJECT_NAME:-mintel-me}-web.rule=${TRAEFIK_HOST_RULE:-Host("${TRAEFIK_HOST:-mintel.localhost}")}' - "traefik.http.routers.${PROJECT_NAME:-mintel-me}-web.entrypoints=web" - 'traefik.http.routers.${PROJECT_NAME:-mintel-me}.rule=${TRAEFIK_HOST_RULE:-Host("${TRAEFIK_HOST:-mintel.localhost}")}' - "traefik.http.routers.${PROJECT_NAME:-mintel-me}.entrypoints=${TRAEFIK_ENTRYPOINT:-web}" - "traefik.http.services.${PROJECT_NAME:-mintel-me}.loadbalancer.server.port=3000" - "traefik.docker.network=infra" gatekeeper: profiles: ["gatekeeper"] image: registry.infra.mintel.me/mintel/gatekeeper:v1.7.12 restart: always networks: infra: aliases: - ${PROJECT_NAME:-mintel-me}-gatekeeper env_file: - .env environment: PORT: 3000 labels: - "traefik.enable=true" - "traefik.http.services.${PROJECT_NAME:-mintel-me}-gatekeeper.loadbalancer.server.port=3000" - "traefik.docker.network=infra" directus: image: registry.infra.mintel.me/mintel/directus:latest restart: always networks: - default - infra env_file: - .env environment: KEY: ${DIRECTUS_KEY} SECRET: ${DIRECTUS_SECRET} DB_CLIENT: "pg" DB_HOST: "directus-db" DB_PORT: "5432" DB_DATABASE: ${DIRECTUS_DB_NAME:-directus} DB_USER: ${DIRECTUS_DB_USER:-directus} DB_PASSWORD: ${DIRECTUS_DB_PASSWORD:-directus} PUBLIC_URL: ${DIRECTUS_URL:-https://cms.mintel.me} volumes: - ./directus/uploads:/directus/uploads - ./directus/extensions:/directus/extensions - ./directus/migrations:/directus/migrations labels: - "traefik.enable=true" - 'traefik.http.routers.${PROJECT_NAME:-mintel-me}-directus.rule=${TRAEFIK_DIRECTUS_RULE:-Host("${DIRECTUS_HOST:-cms.mintel.localhost}")}' - "traefik.http.routers.${PROJECT_NAME:-mintel-me}-directus.entrypoints=web" - "traefik.http.services.${PROJECT_NAME:-mintel-me}-directus.loadbalancer.server.port=8055" - "traefik.docker.network=infra" directus-db: image: postgres:15-alpine restart: always networks: - default env_file: - .env environment: POSTGRES_DB: ${DIRECTUS_DB_NAME:-directus} POSTGRES_USER: ${DIRECTUS_DB_USER:-directus} POSTGRES_PASSWORD: ${DIRECTUS_DB_PASSWORD:-directus} volumes: - directus-db-data:/var/lib/postgresql/data imgproxy: image: darthsim/imgproxy:latest restart: always networks: - default - infra extra_hosts: - "mintel.localhost:host-gateway" - "cms.mintel.localhost:host-gateway" - "host.docker.internal:host-gateway" environment: IMGPROXY_USE_ETAG: "true" IMGPROXY_MAX_SRC_RESOLUTION: 20 IMGPROXY_ALLOWED_NETWORKS: "10.0.0.0/8,172.16.0.0/12,192.168.0.0/16" IMGPROXY_URL_MAPPING: "http://mintel.localhost/:http://app:3000/,http://cms.mintel.localhost/:http://directus:8055/" labels: - "traefik.enable=true" - 'traefik.http.routers.${PROJECT_NAME:-mintel-me}-imgproxy.rule=Host("${IMGPROXY_HOST:-img.mintel.localhost}")' - "traefik.http.routers.${PROJECT_NAME:-mintel-me}-imgproxy.entrypoints=web" - "traefik.http.services.${PROJECT_NAME:-mintel-me}-imgproxy.loadbalancer.server.port=8080" - "traefik.docker.network=infra" networks: default: name: ${PROJECT_NAME:-mintel-me}-internal infra: external: true volumes: directus-db-data: