link-stack/docker-compose.yml
2023-06-21 07:32:00 +00:00

323 lines
9.6 KiB
YAML

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
opensearch:
container_name: opensearch
build: ./docker/opensearch
restart: ${RESTART}
volumes:
- opensearch-data:/usr/share/opensearch/data
opensearch-dashboards:
container_name: opensearch-dashboards
build: ./docker/opensearch-dashboards
restart: ${RESTART}
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:5435:5432
metamigo-api:
build:
context: .
dockerfile: ./apps/metamigo-cli/Dockerfile
image: registry.gitlab.com/digiresilience/link/link-stack/metamigo
container_name: metamigo-api
restart: ${RESTART}
command: [ "api" ]
ports:
- 127.0.0.1:8003: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}
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
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
restart: ${RESTART}
build:
context: .
dockerfile: ./apps/link/Dockerfile
expose:
- "3000"
ports:
- "8004:3000"
environment:
ZAMMAD_PROXY_URL: ${ZAMMAD_PROXY_URL}
ZAMMAD_API_TOKEN: ${ZAMMAD_API_TOKEN}
ZAMMAD_VIRUAL_HOST: ${ZAMMAD_VIRTUAL_HOST}
LINK_URL: ${LINK_URL}
LEAFCUTTER_URL: http://leafcutter:3000
METAMIGO_URL: http://metamigo-frontend:3000
ZAMMAD_URL: http://localhost:8001
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
restart: ${RESTART}
build:
context: .
dockerfile: ./apps/leafcutter/Dockerfile
expose:
- "3000"
ports:
- "8005:3000"
environment:
LINK_EMBEDDED: "true"
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}
volumes:
elasticsearch-data:
driver: local
postgresql-data:
driver: local
zammad-data:
driver: local
metamigo-data:
driver: local
opensearch-data:
driver: local