From 47f32df269b9dc02ba05d4d613d7f357ecdb9c56 Mon Sep 17 00:00:00 2001 From: brooke Date: Wed, 30 Apr 2025 17:54:11 -0400 Subject: [PATCH] remove depends_on statements that abra doesn't like, add environment vars, add volumes, remove smtp_pass --- compose.yml | 206 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 162 insertions(+), 44 deletions(-) diff --git a/compose.yml b/compose.yml index 5ef92b9..54b0e5a 100644 --- a/compose.yml +++ b/compose.yml @@ -1,4 +1,3 @@ ---- version: "3.8" services: @@ -6,32 +5,54 @@ services: app: image: ghcr.io/revoltchat/server:20250210-1 depends_on: - database: - condition: service_healthy - redis: - condition: service_started - rabbit: - condition: service_healthy + - database + - redis + - rabbit + environment: + - HOSTNAME + - REVOLT_PUBLIC_URL + - INVITE_ONLY_ENABLED + - EMAIL_VERIFICATION_ENABLED + - SMTP_HOST + - SMTP_USERNAME + - SMTP_FROM_ADDRESS + - SMTP_REPLY_TO + - SMTP_PORT + - SMTP_USE_TLS + - SECURITY_CAPTCHA_ENABLED + - SECURITY_CLAMV_HOST + - NOTIFICATIONS_WEBOOKS_ENABLED + - NOTIFICATIONS_MASS_MENTIONS_PUSH_NOTIF + - NOTIFICATIONS_MASS_MENTIONS_ENABLED + - NOTIFICATIONS_FCM_ENABLED + - NOTIFICATIONS_APN_ENABLED deploy: restart_policy: condition: on-failure labels: - "traefik.enable=true" - - "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=80" - - "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`)" - - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" - - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" + - "traefik.http.services.api.loadbalancer.server.port=14702" + - "traefik.http.routers.api.rule=Host(`${DOMAIN}`) && PathPrefix(`/api`)" + - "traefik.http.routers.api.entrypoints=web-secure" + - "traefik.http.routers.api.tls.certresolver=${LETS_ENCRYPT_ENV}" + - "traefik.http.middlewares.api-stripprefix.stripprefix.prefixes=/api" + - "traefik.http.routers.api.middlewares=api-stripprefix" - "coop-cloud.${STACK_NAME}.version=0.1.0+0.8.2" configs: - source: revolt_toml target: /Revolt.toml + secrets: + - file_encrypt_token + - public_key + - private_key + - rabbit_password networks: internal: proxy: + database: image: docker.io/mongo - restart: always volumes: - db:/data/db healthcheck: @@ -43,19 +64,20 @@ services: networks: internal: + redis: - image: docker.io/eqalpha/keydb + image: docker.io/eqalpha/keydb:x86_64_v6.3.4 networks: internal: + rabbit: - image: docker.io/rabbitmq:4 - restart: always + image: docker.io/rabbitmq:4.1.0 environment: RABBITMQ_DEFAULT_USER: rabbituser RABBITMQ_DEFAULT_PASS: rabbitpass volumes: - - ./data/rabbit:/var/lib/rabbitmq + - rabbit:/var/lib/rabbitmq healthcheck: test: rabbitmq-diagnostics -q ping interval: 10s @@ -65,11 +87,12 @@ services: networks: internal: + minio: - image: docker.io/minio/minio + image: docker.io/minio/minio:RELEASE.2025-04-22T22-12-26Z command: server /data volumes: - - ./data/minio:/data + - minio:/data environment: MINIO_ROOT_USER: minioautumn MINIO_ROOT_PASSWORD: minioautumn @@ -77,77 +100,166 @@ services: networks: internal: + events: image: ghcr.io/revoltchat/bonfire:20250210-1 depends_on: - database: - condition: service_healthy - redis: - condition: service_started + - database + - redis + environment: + - HOSTNAME + - REVOLT_PUBLIC_URL + - INVITE_ONLY_ENABLED + - EMAIL_VERIFICATION_ENABLED + - SMTP_HOST + - SMTP_USERNAME + - SMTP_FROM_ADDRESS + - SMTP_REPLY_TO + - SMTP_PORT + - SMTP_USE_TLS + - SECURITY_CAPTCHA_ENABLED + - SECURITY_CLAMV_HOST + - NOTIFICATIONS_WEBOOKS_ENABLED + - NOTIFICATIONS_MASS_MENTIONS_PUSH_NOTIF + - NOTIFICATIONS_MASS_MENTIONS_ENABLED + - NOTIFICATIONS_FCM_ENABLED + - NOTIFICATIONS_APN_ENABLED configs: - source: revolt_toml target: /Revolt.toml + deploy: + labels: + - "traefik.enable=true" + - "traefik.http.services.events.loadbalancer.server.port=14703" + - "traefik.http.routers.events.rule=Host(`${DOMAIN}`) && PathPrefix(`/ws`)" + - "traefik.http.routers.events.entrypoints=web-secure" + - "traefik.http.routers.events.tls.certresolver=${LETS_ENCRYPT_ENV}" + - "traefik.http.middlewares.ws-stripprefix.stripprefix.prefixes=/ws" + - "traefik.http.routers.events.middlewares=ws-stripprefix" networks: internal: + proxy: web: image: ghcr.io/revoltchat/client:1.0.1 + environment: + - HOSTNAME + - REVOLT_PUBLIC_URL + deploy: + labels: + - "traefik.enable=true" + - "traefik.http.services.web.loadbalancer.server.port=5000" + - "traefik.http.routers.web.rule=Host(`${DOMAIN}`) && !PathPrefix(`/api`, `/ws`, `/autumn`, `/january`)" + - "traefik.http.routers.web.entrypoints=web-secure" + - "traefik.http.routers.web.tls.certresolver=${LETS_ENCRYPT_ENV}" + - "traefik.http.routers.web.priority=1" networks: internal: + proxy: + autumn: image: ghcr.io/revoltchat/autumn:20250210-1 depends_on: - database: - condition: service_healthy - createbuckets: - condition: service_started + - database + - createbuckets + environment: + - HOSTNAME + - REVOLT_PUBLIC_URL + - INVITE_ONLY_ENABLED + - EMAIL_VERIFICATION_ENABLED + - SMTP_HOST + - SMTP_USERNAME + - SMTP_FROM_ADDRESS + - SMTP_REPLY_TO + - SMTP_PORT + - SMTP_USE_TLS + - SECURITY_CAPTCHA_ENABLED + - SECURITY_CLAMV_HOST configs: - source: revolt_toml target: /Revolt.toml + deploy: + labels: + - "traefik.enable=true" + - "traefik.http.services.autumn.loadbalancer.server.port=14704" + - "traefik.http.routers.autumn.rule=Host(`${DOMAIN}`) && PathPrefix(`/autumn`)" + - "traefik.http.routers.autumn.entrypoints=web-secure" + - "traefik.http.routers.autumn.tls.certresolver=${LETS_ENCRYPT_ENV}" + - "traefik.http.middlewares.autumn-stripprefix.stripprefix.prefixes=/autumn" + - "traefik.http.routers.autumn.middlewares=autumn-stripprefix" networks: internal: + proxy: + - # Metadata and image proxy january: image: ghcr.io/revoltchat/january:20250210-1 + environment: + - HOSTNAME + - REVOLT_PUBLIC_URL configs: - source: revolt_toml target: /Revolt.toml + deploy: + labels: + - "traefik.enable=true" + - "traefik.http.services.january.loadbalancer.server.port=14705" + - "traefik.http.routers.january.rule=Host(`${DOMAIN}`) && PathPrefix(`/january`)" + - "traefik.http.routers.january.entrypoints=web-secure" + - "traefik.http.routers.january.tls.certresolver=${LETS_ENCRYPT_ENV}" + - "traefik.http.middlewares.january-stripprefix.stripprefix.prefixes=/january" + - "traefik.http.routers.january.middlewares=january-stripprefix" networks: internal: + proxy: + - # Regular task daemon crond: image: ghcr.io/revoltchat/crond:20250210-1-debug depends_on: - database: - condition: service_healthy - minio: - condition: service_started + - database + - minio + environment: + - HOSTNAME + - REVOLT_PUBLIC_URL + - INVITE_ONLY_ENABLED + - EMAIL_VERIFICATION_ENABLED + - SMTP_HOST + - SMTP_USERNAME + - SMTP_FROM_ADDRESS + - SMTP_REPLY_TO + - SMTP_PORT + - SMTP_USE_TLS configs: - source: revolt_toml target: /Revolt.toml networks: internal: - # Push notification daemon + pushd: image: ghcr.io/revoltchat/pushd:20250210-1 depends_on: - database: - condition: service_healthy - redis: - condition: service_started - rabbit: - condition: service_healthy + - database + - redis + - rabbit + environment: + - HOSTNAME + - REVOLT_PUBLIC_URL + - NOTIFICATIONS_WEBOOKS_ENABLED + - NOTIFICATIONS_MASS_MENTIONS_PUSH_NOTIF + - NOTIFICATIONS_MASS_MENTIONS_ENABLED + - NOTIFICATIONS_FCM_ENABLED + - NOTIFICATIONS_APN_ENABLED configs: - source: revolt_toml target: /Revolt.toml networks: internal: + createbuckets: image: docker.io/minio/mc depends_on: @@ -160,15 +272,24 @@ services: networks: internal: + networks: proxy: external: true + internal: + + +volumes: + db: + minio: + rabbit: + configs: revolt_toml: - name: ${STACK_NAME}_entrypoint_${ENTRYPOINT_VERSION} + name: ${STACK_NAME}_revolt_toml_${REVOLT_TOML_VERSION} file: Revolt.toml.tmpl - template_driver: golang + template_driver: golang secrets: file_encrypt_token: @@ -183,6 +304,3 @@ secrets: rabbit_password: name: ${STACK_NAME}_rabbit_password_${SECRET_RABBIT_PASSWORD_VERSION} external: true - smtp_password: - name: ${STACK_NAME}_smtp_password_${SECRET_SMTP_PASSWORD_VERSION} - external: true \ No newline at end of file