Files
trunk-server/docker-compose.yml
2024-10-20 22:28:45 -04:00

210 lines
4.7 KiB
YAML

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: