version: "3" services: nginx: build: context: ./nginx-proxy args: STAGE: ${STAGE} environment: - DOMAIN_NAME image: "nginx:${TAG}-${STAGE}" networks: - proxy ports: - "80:80" - "443:443" - "5602:5602" restart: always volumes: - ${PWD}/data/log/syslog:/var/log/syslog - ${PWD}/data/log/nginx:/var/log/nginx - ${PWD}/data/certbot/www/:/var/www/certbot/:ro - ${PWD}/data/certbot/conf/:/etc/letsencrypt/:ro depends_on: - backend - frontend - account - admin command: /bin/bash -c "envsubst '$$DOMAIN_NAME' < /etc/nginx/conf.d/site.template > /etc/nginx/conf.d/default.conf && while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g 'daemon off;'" certbot: image: certbot/certbot:latest volumes: - ${PWD}/data/certbot/www/:/var/www/certbot/:rw - ${PWD}/data/certbot/conf/:/etc/letsencrypt/:rw entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'" logging: driver: syslog options: tag: "certbot" mongo: build: context: ./mongo environment: - FREE_PLAN - PRO_PLAN - FREE_PLAN_ARCHIVE - PRO_PLAN_ARCHIVE image: "mongo:${TAG}-${STAGE}" volumes: - ${PWD}/data/mongo:/data/db networks: - node restart: always logging: driver: syslog options: tag: "mongo" backend: build: context: ./backend image: "backend:${TAG}-${STAGE}" pid: "host" environment: - OTEL_EXPORTER_OTLP_PROTOCOL - OTEL_EXPORTER_OTLP_ENDPOINT - OTEL_EXPORTER_OTLP_HEADERS - OTEL_SERVICE_NAME - MONGO_HOST - MONGO_PORT - MONGO_USER - MONGO_PASSWORD - MAILJET_KEY - MAILJET_SECRET - REACT_APP_ADMIN_EMAIL - REACT_APP_SITE_NAME - NODE_ENV - REACT_APP_BACKEND_SERVER - REACT_APP_ADMIN_SERVER - REACT_APP_FRONTEND_SERVER - REACT_APP_ACCOUNT_SERVER - S3_ENDPOINT - S3_BUCKET - S3_PROFILE - S3_REGION - S3_PUBLIC_URL - HONEYCOMB_API_KEY volumes: - "~/.aws:/home/app/.aws" - ${PWD}/data/stats:/data/stats depends_on: - mongo ports: - "3005:3005" networks: - node - proxy restart: always logging: driver: syslog options: tag: "backend" admin: build: context: ./admin args: - REACT_APP_BACKEND_SERVER - REACT_APP_ADMIN_SERVER - REACT_APP_ACCOUNT_SERVER - REACT_APP_FRONTEND_SERVER - REACT_APP_SITE_NAME - REACT_APP_ADMIN_EMAIL - NODE_ENV image: "admin:${TAG}-${STAGE}" environment: - REACT_APP_BACKEND_SERVER - REACT_APP_ADMIN_SERVER - REACT_APP_ACCOUNT_SERVER - REACT_APP_FRONTEND_SERVER - REACT_APP_SITE_NAME - MONGO_HOST - MONGO_PORT - MONGO_USER - MONGO_PASSWORD - NODE_ENV depends_on: - mongo networks: - node - proxy restart: always logging: driver: syslog options: tag: "admin" account: build: context: ./account args: - REACT_APP_BACKEND_SERVER - REACT_APP_ADMIN_SERVER - REACT_APP_ACCOUNT_SERVER - REACT_APP_FRONTEND_SERVER - REACT_APP_SITE_NAME - REACT_APP_ADMIN_EMAIL - NODE_ENV image: "acount:${TAG}-${STAGE}" environment: - MONGO_HOST - MONGO_PORT - MONGO_USER - MONGO_PASSWORD - MAILJET_KEY - MAILJET_SECRET - REACT_APP_BACKEND_SERVER - REACT_APP_ADMIN_SERVER - REACT_APP_ACCOUNT_SERVER - REACT_APP_FRONTEND_SERVER - REACT_APP_SITE_NAME - REACT_APP_ADMIN_EMAIL - REACT_APP_COOKIE_DOMAIN - NODE_ENV depends_on: - mongo networks: - node - proxy restart: always logging: driver: syslog options: tag: "account" frontend: build: context: ./frontend args: - REACT_APP_BACKEND_SERVER - REACT_APP_FRONTEND_SERVER - REACT_APP_SITE_NAME - REACT_APP_GOOGLE_ANALYTICS - NODE_ENV image: "frontend:${TAG}-${STAGE}" environment: - MONGO_NODE_DRIVER_HOST=mongo - REACT_APP_BACKEND_SERVER - REACT_APP_FRONTEND_SERVER - REACT_APP_SITE_NAME - REACT_APP_GOOGLE_ANALYTICS - GLIBC_TUNABLES=glibc.pthread.rseq=0 ulimits: memlock: -1 depends_on: - mongo networks: - node - proxy restart: always logging: driver: syslog options: tag: "frontend" networks: proxy: node: