From 9b20538e7bdbccd923547aa06a153a0001a0e522 Mon Sep 17 00:00:00 2001 From: Philipp Rothmann Date: Thu, 7 Apr 2022 14:37:14 +0200 Subject: [PATCH] replace yml templating stuff afaik yml templating is no longer supported by abra? not sure if there is a better way to reduce so much redundancy --- compose.yml | 241 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 155 insertions(+), 86 deletions(-) diff --git a/compose.yml b/compose.yml index 6752e41..07f5b06 100644 --- a/compose.yml +++ b/compose.yml @@ -1,61 +1,60 @@ version: "3.8" -x-env: &env - DOMAIN: - EMAIL_ERROR: - EMAIL_REPLY_DOMAIN: - EMAIL_SENDER: - FOODCOOP_CITY: - FOODCOOP_COUNTRY: - FOODCOOP_EMAIL: - FOODCOOP_FOOTER: - FOODCOOP_HELP_URL: - FOODCOOP_HOMEPAGE: - FOODCOOP_MULTI_INSTALL: - FOODCOOP_NAME: - FOODCOOP_PHONE: - FOODCOOP_STREET: - FOODCOOP_TIME_ZONE: - FOODCOOP_ZIP_CODE: - LOG_LEVEL: - MYSQL_DB: foodsoft - MYSQL_HOST: db - MYSQL_PORT: 3306 - MYSQL_USER: foodsoft - QUEUE: foodsoft_notifier - REDIS_URL: redis://cache:6379 - SECRET_KEY_BASE_FILE: /run/secrets/secret_key_base - SMTP_ADDRESS: - SMTP_AUTHENTICATION: - SMTP_DOMAIN: - SMTP_ENABLE_STARTTLS_AUTO: - SMTP_PASSWORD_FILE: /run/secrets/smtp_password - SMTP_PORT: - SMTP_USER_NAME: -x-configs: &configs - - source: app_config - target: /usr/src/app/config/app_config.yml - - source: db_config - target: /usr/src/app/config/database.yml - - source: production_env - target: /usr/src/app/config/environments/production.rb - - source: entrypoint - target: /usr/src/app/docker-entrypoint.sh - mode: 0555 -x-secrets: &secrets - - db_password - - secret_key_base - - smtp_password services: app: image: foodcoops/foodsoft:4.7.1 networks: - internal - proxy - secrets: *secrets - configs: *configs - entrypoint: &entrypoint /usr/src/app/docker-entrypoint.sh + secrets: + - db_password + - secret_key_base + - smtp_password + configs: + - source: app_config + target: /usr/src/app/config/app_config.yml + - source: db_config + target: /usr/src/app/config/database.yml + - source: production_env + target: /usr/src/app/config/environments/production.rb + - source: entrypoint + target: /usr/src/app/docker-entrypoint.sh + mode: 0555 + entrypoint: /usr/src/app/docker-entrypoint.sh environment: - !%21merge <<: *env + CERTBOT_DISABLED: 1 + DOMAIN: + EMAIL_ERROR: + EMAIL_REPLY_DOMAIN: + EMAIL_SENDER: + FOODCOOP_CITY: + FOODCOOP_COUNTRY: + FOODCOOP_EMAIL: + FOODCOOP_FOOTER: + FOODCOOP_HELP_URL: + FOODCOOP_HOMEPAGE: + FOODCOOP_MULTI_INSTALL: + FOODCOOP_NAME: + FOODCOOP_PHONE: + FOODCOOP_STREET: + FOODCOOP_TIME_ZONE: + FOODCOOP_ZIP_CODE: + FOODCOOP_USE_NICK: + FOODCOOP_LANGUAGE: + LOG_LEVEL: + MYSQL_DB: + MYSQL_HOST: + MYSQL_PORT: + MYSQL_USER: + QUEUE: foodsoft_notifier + REDIS_URL: redis://cache:6379 + SECRET_KEY_BASE_FILE: /run/secrets/secret_key_base + SMTP_ADDRESS: + SMTP_AUTHENTICATION: + SMTP_DOMAIN: + SMTP_ENABLE_STARTTLS_AUTO: + SMTP_PASSWORD_FILE: /run/secrets/smtp_password + SMTP_PORT: + SMTP_USER_NAME: FOODSOFT_SERVICE: app healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000"] @@ -76,54 +75,122 @@ services: - coop-cloud.${STACK_NAME}.app.version=4.7.1- cron: image: foodcoops/foodsoft:4.7.1 + secrets: + - db_password + - secret_key_base + - smtp_password + configs: + - source: app_config + target: /usr/src/app/config/app_config.yml + - source: db_config + target: /usr/src/app/config/database.yml + - source: production_env + target: /usr/src/app/config/environments/production.rb + - source: entrypoint + target: /usr/src/app/docker-entrypoint.sh + mode: 0555 + entrypoint: /usr/src/app/docker-entrypoint.sh environment: - !%21merge <<: *env + CERTBOT_DISABLED: 1 + DOMAIN: + EMAIL_ERROR: + EMAIL_REPLY_DOMAIN: + EMAIL_SENDER: + FOODCOOP_CITY: + FOODCOOP_COUNTRY: + FOODCOOP_EMAIL: + FOODCOOP_FOOTER: + FOODCOOP_HELP_URL: + FOODCOOP_HOMEPAGE: + FOODCOOP_MULTI_INSTALL: + FOODCOOP_NAME: + FOODCOOP_PHONE: + FOODCOOP_STREET: + FOODCOOP_TIME_ZONE: + FOODCOOP_ZIP_CODE: + FOODCOOP_USE_NICK: + FOODCOOP_LANGUAGE: + LOG_LEVEL: + MYSQL_DB: + MYSQL_HOST: + MYSQL_PORT: + MYSQL_USER: + QUEUE: foodsoft_notifier + REDIS_URL: redis://cache:6379 + SECRET_KEY_BASE_FILE: /run/secrets/secret_key_base + SMTP_ADDRESS: + SMTP_AUTHENTICATION: + SMTP_DOMAIN: + SMTP_ENABLE_STARTTLS_AUTO: + SMTP_PASSWORD_FILE: /run/secrets/smtp_password + SMTP_PORT: + SMTP_USER_NAME: FOODSOFT_SERVICE: cron - configs: *configs - entrypoint: *entrypoint - secrets: *secrets networks: - internal - deploy: - labels: ['coop-cloud.${STACK_NAME}.cron.version=4.7.1-'] + worker: image: foodcoops/foodsoft:4.7.1 + secrets: + - db_password + - secret_key_base + - smtp_password + configs: + - source: app_config + target: /usr/src/app/config/app_config.yml + - source: db_config + target: /usr/src/app/config/database.yml + - source: production_env + target: /usr/src/app/config/environments/production.rb + - source: entrypoint + target: /usr/src/app/docker-entrypoint.sh + mode: 0555 + entrypoint: /usr/src/app/docker-entrypoint.sh environment: - !%21merge <<: *env + CERTBOT_DISABLED: 1 + DOMAIN: + EMAIL_ERROR: + EMAIL_REPLY_DOMAIN: + EMAIL_SENDER: + FOODCOOP_CITY: + FOODCOOP_COUNTRY: + FOODCOOP_EMAIL: + FOODCOOP_FOOTER: + FOODCOOP_HELP_URL: + FOODCOOP_HOMEPAGE: + FOODCOOP_MULTI_INSTALL: + FOODCOOP_NAME: + FOODCOOP_PHONE: + FOODCOOP_STREET: + FOODCOOP_TIME_ZONE: + FOODCOOP_ZIP_CODE: + FOODCOOP_USE_NICK: + FOODCOOP_LANGUAGE: + LOG_LEVEL: + MYSQL_DB: + MYSQL_HOST: + MYSQL_PORT: + MYSQL_USER: + QUEUE: foodsoft_notifier + REDIS_URL: redis://cache:6379 + SECRET_KEY_BASE_FILE: /run/secrets/secret_key_base + SMTP_ADDRESS: + SMTP_AUTHENTICATION: + SMTP_DOMAIN: + SMTP_ENABLE_STARTTLS_AUTO: + SMTP_PASSWORD_FILE: /run/secrets/smtp_password + SMTP_PORT: + SMTP_USER_NAME: FOODSOFT_SERVICE: worker - configs: *configs - entrypoint: *entrypoint - secrets: *secrets networks: - internal - deploy: - labels: ['coop-cloud.${STACK_NAME}.worker.version=4.7.1-'] - smtp: - image: foodcoops/foodsoft:4.7.1 - configs: *configs - entrypoint: *entrypoint - secrets: *secrets - environment: - !%21merge <<: *env - FOODSOFT_SERVICE: smtp - SMTP_SERVER_HOST: - SMTP_SERVER_PORT: - networks: - - proxy - - internal - deploy: - labels: - - "traefik.enable=true" - - "traefik.tcp.routers.foodsoft-smtp.rule=HostSNI(`*`)" - - "traefik.tcp.routers.foodsoft-smtp.entrypoints=foodsoft-smtp" - - "traefik.tcp.services.foodsoft-smtp.loadbalancer.server.port=${SMTP_SERVER_PORT}" - - coop-cloud.${STACK_NAME}.smtp.version=4.7.1- + db: image: "mariadb:10.6" command: "mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_520_ci" environment: - MYSQL_USER: foodsoft - MYSQL_DATABASE: foodsoft + MYSQL_USER: ${MYSQL_USER} + MYSQL_DATABASE: ${MYSQL_DB} MYSQL_PASSWORD_FILE: /run/secrets/db_password MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password secrets: @@ -139,14 +206,15 @@ services: image: "redis:6" networks: - internal - deploy: - labels: ['coop-cloud.${STACK_NAME}.cache.version=6-'] + networks: internal: proxy: external: true + volumes: db: + configs: app_config: name: ${STACK_NAME}_app_config_${APP_CONFIG_VERSION} @@ -164,6 +232,7 @@ configs: name: ${STACK_NAME}_production_env_${PRODUCTION_ENV_VERSION} file: production.rb.tmpl template_driver: golang + secrets: db_password: name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION}