--- version: "3.8" services: app: image: "foodcoops/foodsoft:4.7.0" networks: - internal - proxy secrets: - db_passwd - shared_lists_db_passwd configs: - source: app_config target: /usr/src/app/config/app_config.yml - source: db_config target: /usr/src/app/config/database.yml environment: - DOMAIN - EMAIL_ERROR - EMAIL_REPLY - EMAIL_SENDER - FOODCOOP_CITY - FOODCOOP_COUNTRY - FOODCOOP_EMAIL - FOODCOOP_FOOTER - FOODCOOP_HELP_URL - FOODCOOP_HOMEPAGE - FOODCOOP_NAME - FOODCOOP_PHONE - FOODCOOP_STREET - FOODCOOP_TIME_ZONE - FOODCOOP_ZIP_CODE - MYSQL_HOST=db - MYSQL_NAME=foodsoft - MYSQL_PORT=3306 - MYSQL_USER=foodsoft - SHARED_LISTS_DB_NAME - SHARED_LISTS_DB_TYPE - SHARED_LISTS_HOST - SHARED_LISTS_USER deploy: update_config: failure_action: rollback order: start-first labels: - "traefik.enable=true" - "traefik.http.routers.foodsoft.rule=Host(`${DOMAIN}`)" - "traefik.http.routers.foodsoft.entrypoints=web-secure" - "traefik.http.services.foodsoft.loadbalancer.server.port=3000" - "traefik.http.routers.foodsoft.tls.certresolver=${LETS_ENCRYPT_ENV}" cron: image: "foodcoops/foodsoft:4.7.0" command: ./proc-start cron networks: - internal worker: image: "foodcoops/foodsoft:4.7.0" command: ./proc-start worker networks: - internal db: image: "mariadb:10.5" command: | mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci environment: - MYSQL_DATABASE=foodsoft - MYSQL_USER=foodsoft - MYSQL_PASSWORD_FILE=/run/secrets/db_passwd - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_root_passwd secrets: - db_passwd - db_root_passwd volumes: - "database:/var/lib/mysql" networks: - internal cache: image: "redis:6" networks: internal: proxy: external: true volumes: database: configs: app_config: name: ${STACK_NAME}_app_config_${APP_CONFIG_VERSION} file: app_config.yml.tmpl template_driver: golang db_config: name: ${STACK_NAME}_db_config_${DB_CONFIG_VERSION} file: database.yml.tmpl template_driver: golang secrets: db_passwd: name: ${STACK_NAME}_db_passwd_${DB_PASSWORD_VERSION} external: true db_root_passwd: name: ${STACK_NAME}_db_root_passwd_${DB_ROOT_PASSWD_VERSION} external: true shared_lists_db_passwd: name: ${STACK_NAME}_shared_lists_db_passwd_${SHARED_LISTS_DB_PASSWD_VERSION} external: true