# This is a production version of the Bigcapital docker-compose.yml file. version: '3.3' services: nginx: container_name: bigcapital-nginx-gateway build: context: ./docker/nginx args: - SERVER_PROXY_PORT=3000 - WEB_SSL=false - SELF_SIGNED=false volumes: - ./data/logs/nginx/:/var/log/nginx - ./docker/certbot/certs/:/var/certs ports: - '${PUBLIC_PROXY_PORT:-80}:80' - '${PUBLIC_PROXY_SSL_PORT:-443}:443' tty: true depends_on: - server - webapp deploy: restart_policy: condition: unless-stopped webapp: container_name: bigcapital-webapp image: ghcr.io/bigcapitalhq/webapp:latest deploy: restart_policy: condition: unless-stopped server: container_name: bigcapital-server image: ghcr.io/bigcapitalhq/server:latest expose: - '3000' links: - mysql - mongo - redis depends_on: - mysql - mongo - redis deploy: restart_policy: condition: unless-stopped environment: # Mail - MAIL_HOST=${MAIL_HOST} - MAIL_USERNAME=${MAIL_USERNAME} - MAIL_PASSWORD=${MAIL_PASSWORD} - MAIL_PORT=${MAIL_PORT} - MAIL_SECURE=${MAIL_SECURE} - MAIL_FROM_NAME=${MAIL_FROM_NAME} - MAIL_FROM_ADDRESS=${MAIL_FROM_ADDRESS} # Database - DB_HOST=mysql - DB_USER=${DB_USER} - DB_PASSWORD=${DB_PASSWORD} - DB_CHARSET=${DB_CHARSET} # System database - SYSTEM_DB_NAME=${SYSTEM_DB_NAME} # Tenants databases - TENANT_DB_NAME_PERFIX=${TENANT_DB_NAME_PERFIX} # Authentication - JWT_SECRET=${JWT_SECRET} # MongoDB - MONGODB_DATABASE_URL=mongodb://mongo/bigcapital # Application - BASE_URL=${BASE_URL} # Agendash - AGENDASH_AUTH_USER=${AGENDASH_AUTH_USER} - AGENDASH_AUTH_PASSWORD=${AGENDASH_AUTH_PASSWORD} # Sign-up restrictions - SIGNUP_DISABLED=${SIGNUP_DISABLED} - SIGNUP_ALLOWED_DOMAINS=${SIGNUP_ALLOWED_DOMAINS} - SIGNUP_ALLOWED_EMAILS=${SIGNUP_ALLOWED_EMAILS} # Gotenberg (Pdf generator) - GOTENBERG_URL=${GOTENBERG_URL} - GOTENBERG_DOCS_URL=${GOTENBERG_DOCS_URL} database_migration: container_name: bigcapital-database-migration build: context: ./ dockerfile: docker/migration/Dockerfile environment: # Database - DB_HOST=mysql - DB_USER=${DB_USER} - DB_PASSWORD=${DB_PASSWORD} - DB_CHARSET=${DB_CHARSET} - SYSTEM_DB_NAME=${SYSTEM_DB_NAME} # Tenants databases - TENANT_DB_NAME_PERFIX=${TENANT_DB_NAME_PERFIX} depends_on: - mysql mysql: container_name: bigcapital-mysql deploy: restart_policy: condition: unless-stopped build: context: ./docker/mariadb environment: - MYSQL_DATABASE=${SYSTEM_DB_NAME} - MYSQL_USER=${DB_USER} - MYSQL_PASSWORD=${DB_PASSWORD} - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD} volumes: - mysql:/var/lib/mysql expose: - '3306' mongo: container_name: bigcapital-mongo deploy: restart_policy: condition: unless-stopped build: ./docker/mongo expose: - '27017' volumes: - mongo:/var/lib/mongodb redis: container_name: bigcapital-redis deploy: restart_policy: condition: unless-stopped build: context: ./docker/redis expose: - '6379' volumes: - redis:/data gotenberg: image: gotenberg/gotenberg:7 expose: - '9000' # Volumes volumes: mysql: name: bigcapital_prod_mysql driver: local mongo: name: bigcapital_prod_mongo driver: local redis: name: bigcapital_prod_redis driver: local