version: "3.4" 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 build: ./docker/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 POSTGRESQL_USER: zammad POSTGRESQL_PASS: ${ZAMMAD_DATABASE_PASSWORD} build: ./docker/zammad restart: on-failure volumes: - zammad-data:/opt/zammad zammad-memcached: container_name: zammad-memcached command: memcached -m 256M build: ./docker/memcached restart: ${RESTART} 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 restart: ${RESTART} environment: NGINX_SERVER_SCHEME: https VIRTUAL_HOST: ${ZAMMAD_VIRTUAL_HOST} VIRTUAL_PORT: 8080 volumes: - zammad-data:/opt/zammad zammad-postgresql: container_name: zammad-postgresql environment: - POSTGRES_USER=zammad - POSTGRES_PASSWORD=${ZAMMAD_DATABASE_PASSWORD} build: ./docker/postgresql restart: ${RESTART} 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-zammad-variables build: ./docker/zammad restart: ${RESTART} volumes: - zammad-data:/opt/zammad zammad-redis: container_name: zammad-redis build: ./docker/redis restart: ${RESTART} zammad-scheduler: platform: linux/x86_64 container_name: zammad-scheduler command: [ "zammad-scheduler" ] depends_on: - zammad-memcached - zammad-railsserver - zammad-redis environment: *common-zammad-variables build: ./docker/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-zammad-variables build: ./docker/zammad restart: ${RESTART} volumes: - zammad-data:/opt/zammad # metamigo-api: # build: ./apps/metamigo-api # container_name: metamigo-api # restart: ${RESTART} # command: [ "api" ] # expose: # - "3001" # environment: *common-metamigo-variables # volumes: # - ./signald:/signald # metamigo-frontend: # build: ./apps/metamigo-frontend # container_name: metamigo-frontend # restart: ${RESTART} # command: [ "frontend" ] # expose: # - "3000" # ports: # - 127.0.0.1:8002:3000 # environment: # <<: *common-metamigo-variables # VIRTUAL_HOST: ${METAMIGO_VIRTUAL_HOST} # VIRTUAL_PORT: 3000 # metamigo-worker: # build: ./apps/metamigo-worker # container_name: metamigo-worker # restart: ${RESTART} # command: [ "worker" ] # environment: *common-metamigo-variables metamigo-postgresql: build: ./docker/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" expose: - "5432" ports: - 127.0.0.1:5432:5432 signald: container_name: signald build: ./docker/signald restart: ${RESTART} user: ${CURRENT_UID} volumes: - ../signald:/signald # 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: ./apps/link expose: - "3000" ports: - "8003:3000" environment: 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: ./apps/leafcutter expose: - "3000" ports: - "8004:3000" environment: ZAMMAD_PROXY_URL: ${ZAMMAD_PROXY_URL} volumes: elasticsearch-data: driver: local postgresql-data: driver: local zammad-data: driver: local metamigo-data: driver: local