version: "3.4" x-zammad-vars: &common-zammad-variables MEMCACHE_SERVERS: "zammad-memcached:11211" REDIS_URL: "redis://zammad-redis:6379" 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: environment: - discovery.type=single-node build: ./elasticsearch restart: ${RESTART} volumes: - elasticsearch-data:/usr/share/elasticsearch/data zammad-init: command: [ "zammad-init" ] depends_on: - zammad-postgresql environment: <<: *common-zammad-variables POSTGRESQL_USER: zammad POSTGRESQL_PASS: ${ZAMMAD_DATABASE_PASSWORD} build: ./zammad restart: on-failure volumes: - zammad-data:/opt/zammad zammad-memcached: command: memcached -m 256M build: ./memcached restart: ${RESTART} zammad-nginx: command: [ "zammad-nginx" ] expose: - "80" depends_on: - zammad-railsserver build: ./zammad restart: ${RESTART} environment: VIRTUAL_HOST: ${ZAMMAD_VIRTUAL_HOST} VIRTUAL_PORT: 80 volumes: - zammad-data:/opt/zammad zammad-postgresql: environment: - POSTGRES_USER=zammad - POSTGRES_PASSWORD=${ZAMMAD_DATABASE_PASSWORD} build: ./postgres restart: ${RESTART} volumes: - postgresql-data:/var/lib/postgresql/data zammad-railsserver: command: [ "zammad-railsserver" ] depends_on: - zammad-memcached - zammad-postgresql - zammad-redis environment: *common-zammad-variables build: ./zammad restart: ${RESTART} volumes: - zammad-data:/opt/zammad zammad-redis: build: ./redis restart: ${RESTART} zammad-scheduler: command: [ "zammad-scheduler" ] depends_on: - zammad-memcached - zammad-railsserver - zammad-redis environment: *common-zammad-variables build: ./zammad restart: ${RESTART} volumes: - zammad-data:/opt/zammad zammad-websocket: command: [ "zammad-websocket" ] depends_on: - zammad-memcached - zammad-railsserver - zammad-redis environment: *common-zammad-variables build: ./zammad restart: ${RESTART} volumes: - zammad-data:/opt/zammad metamigo-api: build: ./metamigo-api container_name: metamigo-api restart: ${RESTART} command: [ "api" ] expose: - "3001" environment: *common-metamigo-variables volumes: - ./signald:/signald metamigo-frontend: build: ./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: ./metamigo-worker container_name: metamigo-worker restart: ${RESTART} command: [ "worker" ] environment: *common-metamigo-variables metamigo-postgresql: build: ./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" expose: - "5432" ports: - 127.0.0.1:5432:5432 signald: build: ./signald restart: ${RESTART} user: ${CURRENT_UID} volumes: - ../signald:/signald nginx-proxy: build: ./nginx-proxy restart: ${RESTART} ports: - "80:80" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro link-shell: build: ./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} zammad-proxy: build: ./zammad-proxy expose: - "3000" ports: - "8004:3000" environment: ZAMMAD_URL: ${ZAMMAD_URL} ZAMMAD_API_TOKEN: ${ZAMMAD_API_TOKEN} ZAMMAD_VIRUAL_HOST: ${ZAMMAD_VIRTUAL_HOST} volumes: elasticsearch-data: driver: local postgresql-data: driver: local zammad-data: driver: local metamigo-data: driver: local