version: "3.4" x-global-vars: &common-global-variables TZ: Etc/UTC x-zammad-vars: &common-zammad-variables MEMCACHE_SERVERS: "zammad-memcached:11211" REDIS_URL: "redis://zammad-redis:6379" ENABLE_EXPERIMENTAL_MOBILE_FRONTEND: "true" x-metamigo-vars: &common-metamigo-variables DATABASE_HOST: "metamigo-postgresql" DATABASE_NAME: "metamigo" DATABASE_ROOT_OWNER: "root" DATABASE_ROOT_PASSWORD: ${METAMIGO_DATABASE_ROOT_PASSWORD} DATABASE_OWNER: "metamigo" DATABASE_PASSWORD: ${METAMIGO_DATABASE_PASSWORD} DATABASE_VISITOR: "app_visitor" DATABASE_AUTHENTICATOR: "app_graphile_auth" DATABASE_AUTHENTICATOR_PASSWORD: ${METAMIGO_DATABASE_AUTHENTICATOR_PASSWORD} DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/metamigo" WORKER_DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/metamigo" SHADOW_DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/metamigo_shadow" ROOT_DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/template1" APP_ROOT_DATABASE_URL: "postgresql://root:${METAMIGO_DATABASE_ROOT_PASSWORD}@metamigo-postgresql/metamigo" DATABASE_AUTH_URL: "postgresql://app_graphile_auth:${METAMIGO_DATABASE_AUTHENTICATOR_PASSWORD}@metamigo-postgresql/metamigo" CORS_ALLOWED_ORIGINS: "https://metamigo-api,${METAMIGO_DOMAIN},http://localhost:3000,http://127.0.0.1:3000" FRONTEND_URL: ${METAMIGO_DOMAIN} API_URL: "http://metamigo-api:3001" NEXTAUTH_URL: ${METAMIGO_DOMAIN} NEXTAUTH_SECRET: ${NEXTAUTH_SECRET} NEXTAUTH_AUDIENCE: ${NEXTAUTH_AUDIENCE} NEXTAUTH_SIGNING_KEY_B64: ${NEXTAUTH_SIGNING_KEY_B64} NEXTAUTH_ENCRYPTION_KEY_B64: ${NEXTAUTH_ENCRYPTION_KEY_B64} GITLAB_EMAIL_ADDRESS: ${GITLAB_EMAIL_ADDRESS} GITLAB_ID: ${GITLAB_ID} GITLAB_SECRET: ${GITLAB_SECRET} SIGNALD_ENABLED: "true" SIGNALD_SOCKET: /signald/signald.sock services: zammad-elasticsearch: container_name: zammad-elasticsearch environment: discovery.type: single-node ES_JAVA_OPTS: -Xms750m -Xmx750m xpack.security.enabled: false <<: *common-global-variables build: ./docker/elasticsearch image: registry.gitlab.com/digiresilience/link/link-stack/zammad-elasticsearch restart: ${RESTART} volumes: - elasticsearch-data:/usr/share/elasticsearch/data zammad-init: platform: linux/x86_64 container_name: zammad-init command: [ "zammad-init" ] depends_on: - zammad-postgresql environment: <<: [*common-zammad-variables, *common-global-variables] POSTGRESQL_USER: zammad POSTGRESQL_PASS: ${ZAMMAD_DATABASE_PASSWORD} build: ./docker/zammad image: registry.gitlab.com/digiresilience/link/link-stack/zammad restart: on-failure volumes: - zammad-data:/opt/zammad zammad-memcached: container_name: zammad-memcached command: memcached -m 256M build: ./docker/memcached image: registry.gitlab.com/digiresilience/link/link-stack/zammad-memcached restart: ${RESTART} environment: <<: *common-global-variables zammad-nginx: platform: linux/x86_64 container_name: zammad-nginx command: [ "zammad-nginx" ] expose: - "8080" ports: - 127.0.0.1:8001:8080 depends_on: - zammad-railsserver build: ./docker/zammad image: registry.gitlab.com/digiresilience/link/link-stack/zammad restart: ${RESTART} environment: <<: *common-global-variables NGINX_SERVER_SCHEME: https VIRTUAL_HOST: ${ZAMMAD_VIRTUAL_HOST} VIRTUAL_PORT: 8080 volumes: - zammad-data:/opt/zammad zammad-postgresql: container_name: zammad-postgresql environment: <<: *common-global-variables POSTGRES_USER: zammad POSTGRES_PASSWORD: ${ZAMMAD_DATABASE_PASSWORD} build: ./docker/postgresql image: registry.gitlab.com/digiresilience/link/link-stack/postgresql restart: ${RESTART} ports: - 127.0.0.1:5432:5432 volumes: - postgresql-data:/var/lib/postgresql/data zammad-railsserver: platform: linux/x86_64 container_name: zammad-railsserver command: [ "zammad-railsserver" ] depends_on: - zammad-memcached - zammad-postgresql - zammad-redis environment: <<: [*common-global-variables, *common-zammad-variables] build: ./docker/zammad image: registry.gitlab.com/digiresilience/link/link-stack/zammad restart: ${RESTART} volumes: - zammad-data:/opt/zammad zammad-redis: container_name: zammad-redis build: ./docker/redis image: registry.gitlab.com/digiresilience/link/link-stack/zammad-redis restart: ${RESTART} environment: <<: *common-global-variables zammad-scheduler: platform: linux/x86_64 container_name: zammad-scheduler command: [ "zammad-scheduler" ] depends_on: - zammad-memcached - zammad-railsserver - zammad-redis environment: <<: [*common-global-variables, *common-zammad-variables] build: ./docker/zammad image: registry.gitlab.com/digiresilience/link/link-stack/zammad restart: ${RESTART} volumes: - zammad-data:/opt/zammad zammad-websocket: platform: linux/x86_64 container_name: zammad-websocket command: [ "zammad-websocket" ] depends_on: - zammad-memcached - zammad-railsserver - zammad-redis environment: <<: [*common-global-variables, *common-zammad-variables] build: ./docker/zammad image: registry.gitlab.com/digiresilience/link/link-stack/zammad restart: ${RESTART} volumes: - zammad-data:/opt/zammad metamigo-postgresql: build: ./docker/postgresql image: registry.gitlab.com/digiresilience/link/link-stack/postgresql container_name: metamigo-postgresql restart: ${RESTART} volumes: - metamigo-data:/var/lib/postgresql/data - ./scripts/bootstrap-metamigo.sh:/docker-entrypoint-initdb.d/bootstrap-metamigo.sh environment: <<: *common-metamigo-variables POSTGRES_PASSWORD: ${METAMIGO_DATABASE_ROOT_PASSWORD} POSTGRES_USER: "root" POSTGRES_DB: "metamigo" ports: - 127.0.0.1:5433:5432 metamigo-api: build: context: . dockerfile: ./apps/metamigo-cli/Dockerfile image: registry.gitlab.com/digiresilience/link/link-stack/metamigo-cli container_name: metamigo-api restart: ${RESTART} command: [ "api" ] ports: - 127.0.0.1:8004:3001 environment: *common-metamigo-variables volumes: - ./signald-state:/signald depends_on: - metamigo-postgresql - signald metamigo-frontend: build: context: . dockerfile: ./apps/metamigo-frontend/Dockerfile image: registry.gitlab.com/digiresilience/link/link-stack/metamigo-frontend container_name: metamigo-frontend restart: ${RESTART} command: [ "frontend" ] expose: - "3000" ports: - 127.0.0.1:8002:3000 depends_on: - metamigo-api environment: <<: *common-metamigo-variables VIRTUAL_HOST: ${METAMIGO_VIRTUAL_HOST} VIRTUAL_PORT: 3000 metamigo-worker: build: context: . dockerfile: ./apps/metamigo-cli/Dockerfile image: registry.gitlab.com/digiresilience/link/link-stack/metamigo-cli container_name: metamigo-worker restart: ${RESTART} command: [ "worker" ] environment: *common-metamigo-variables depends_on: - metamigo-api signald: container_name: signald build: ./docker/signald image: registry.gitlab.com/digiresilience/link/link-stack/signald restart: ${RESTART} user: ${CURRENT_UID} volumes: - ./signald-state:/signald environment: <<: *common-global-variables # nginx-proxy: # container_name: nginx-proxy # build: ./docker/nginx-proxy # restart: ${RESTART} # ports: # - "80:80" # volumes: # - /var/run/docker.sock:/tmp/docker.sock:ro # link: # container_name: link # build: # context: . # dockerfile: ./apps/link/Dockerfile # expose: # - "3000" # ports: # - "8003:3000" # environment: # <<: *common-global-variables # ZAMMAD_PROXY_URL: ${ZAMMAD_PROXY_URL} # ZAMMAD_URL: ${ZAMMAD_URL} # ZAMMAD_API_TOKEN: ${ZAMMAD_API_TOKEN} # ZAMMAD_VIRUAL_HOST: ${ZAMMAD_VIRTUAL_HOST} # LINK_URL: ${LINK_URL} # NEXTAUTH_URL: ${LINK_URL} # NEXTAUTH_SECRET: ${NEXTAUTH_SECRET} # NEXTAUTH_AUDIENCE: ${NEXTAUTH_AUDIENCE} # NEXTAUTH_SIGNING_KEY_B64: ${NEXTAUTH_SIGNING_KEY_B64} # NEXTAUTH_ENCRYPTION_KEY_B64: ${NEXTAUTH_ENCRYPTION_KEY_B64} # GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID} # GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET} # leafcutter: # container_name: leafcutter # build: # context: . # dockerfile: ./apps/leafcutter/Dockerfile # ports: # - "8004:3000" # environment: # <<: *common-global-variables # LINK_EMBEDDED: "true" volumes: elasticsearch-data: driver: local postgresql-data: driver: local zammad-data: driver: local metamigo-data: driver: local