version: '3.7' services: ##IMPORTANT: ## This container is an SMTP server used to send emails. ## Setup private, tls_cert and tls_key keys before running this part haraka: ports: - '2525:2525' {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./Haraka/Dockerfile {{ else }} image: oneuptime/haraka:{{ .Env.APP_TAG }} {{ end }} restart: always env_file: - ./Haraka/.env redis: image: redis:7.0.3 restart: always ports: - '6370:6379' command: redis-server --requirepass "{{ .Env.REDIS_PASSWORD }}" env_file: - ./Redis/.env clickhouse: image: clickhouse/clickhouse-server:23.2 restart: always env_file: - ./Clickhouse/.env ports: - '8123:8123' - '9000:9000' - '9440:9440' - '9009:9009' volumes: - clickhouse:/var/lib/clickhouse/ postgres: image: postgres:latest restart: always env_file: - ./Postgres/.env ports: - '5400:5432' volumes: - postgres:/var/lib/postgresql/data notification: ports: {{ if eq .Env.ENVIRONMENT "development" }} - 9111:9229 # Debugging port. {{ end }} - 3191:3191 {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./Notification/Dockerfile {{ else }} image: oneuptime/notification:{{ .Env.APP_TAG }} {{ end }} restart: always env_file: - ./Common/.env - ./CommonServer/.env - ./Notification/.env depends_on: - haraka {{ if eq .Env.ENVIRONMENT "development" }} volumes: - ./Notification:/usr/src/app # Use node modules of the container and not host system. # https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder - /usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - /usr/src/Common/node_modules/ - /usr/src/CommonUI/node_modules/ - /usr/src/CommonServer/node_modules/ - /usr/src/Model/node_modules/ {{ end }} accounts: ports: - '3003:3003' {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./Accounts/Dockerfile {{ else }} image: oneuptime/accounts:{{ .Env.APP_TAG }} {{ end }} restart: always env_file: - ./Common/.env - ./CommonUI/.env - ./Accounts/.env depends_on: - identity {{ if eq .Env.ENVIRONMENT "development" }} volumes: - ./Accounts:/usr/src/app # Use node modules of the container and not host system. # https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder - /usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - /usr/src/Common/node_modules/ - /usr/src/CommonUI/node_modules/ - /usr/src/CommonServer/node_modules/ - /usr/src/Model/node_modules/ {{ end }} dashboard: ports: - '3009:3009' {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./Dashboard/Dockerfile {{ else }} image: oneuptime/dashboard:{{ .Env.APP_TAG }} {{ end }} restart: always env_file: - ./Common/.env - ./CommonUI/.env - ./Dashboard/.env depends_on: - identity - accounts {{ if eq .Env.ENVIRONMENT "development" }} volumes: - ./Dashboard:/usr/src/app - /usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - /usr/src/Common/node_modules/ - /usr/src/CommonUI/node_modules/ - /usr/src/CommonServer/node_modules/ - /usr/src/Model/node_modules/ {{ end }} status-page: ports: - '3105:3105' # HTTP UI Port {{ if eq .Env.ENVIRONMENT "development" }} - 9764:9229 # Debugging port. {{ end }} {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./StatusPage/Dockerfile {{ else }} image: oneuptime/status-page:{{ .Env.APP_TAG }} {{ end }} restart: always env_file: - ./Common/.env - ./CommonUI/.env - ./StatusPage/.env depends_on: - accounts - dashboard-api {{ if eq .Env.ENVIRONMENT "development" }} volumes: - ./StatusPage:/usr/src/app - /usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - /usr/src/Common/node_modules/ - /usr/src/CommonUI/node_modules/ - /usr/src/CommonServer/node_modules/ - /usr/src/Model/node_modules/ {{ end }} dashboard-api: ports: - '3002:3002' {{ if eq .Env.ENVIRONMENT "development" }} - '9232:9229' # Debugging port. {{ end }} {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./DashboardAPI/Dockerfile {{ else }} image: oneuptime/dashboard-api:{{ .Env.APP_TAG }} {{ end }} restart: always env_file: - ./Common/.env - ./CommonServer/.env - ./DashboardAPI/.env depends_on: - redis - postgres - notification links: - redis - postgres - notification {{ if eq .Env.ENVIRONMENT "development" }} volumes: - ./DashboardAPI:/usr/src/app # Use node modules of the container and not host system. # https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder - dashboardApiNodeModules:/usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - dashboardApiCommonNodeModules:/usr/src/Common/node_modules/ - dashboardApiCommonUINodeModules:/usr/src/CommonUI/node_modules/ - dashboardApiCommonServerNodeModules:/usr/src/CommonServer/node_modules/ - dashboardApiModelNodeModules:/usr/src/Model/node_modules/ {{ end }} link-shortner: ports: - '3521:3521' {{ if eq .Env.ENVIRONMENT "development" }} - '9826:9229' # Debugging port. {{ end }} {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./LinkShortner/Dockerfile {{ else }} image: oneuptime/link-shortner:{{ .Env.APP_TAG }} {{ end }} restart: always env_file: - ./Common/.env - ./CommonServer/.env - ./LinkShortner/.env depends_on: - redis - postgres links: - redis - postgres {{ if eq .Env.ENVIRONMENT "development" }} volumes: - ./LinkShortner:/usr/src/app # Use node modules of the container and not host system. # https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder - /usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - /usr/src/Common/node_modules/ - /usr/src/CommonUI/node_modules/ - /usr/src/CommonServer/node_modules/ - /usr/src/Model/node_modules/ {{ end }} workflow: ports: - '3099:3099' {{ if eq .Env.ENVIRONMENT "development" }} - '9212:9229' # Debugging port. {{ end }} {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./Workflow/Dockerfile {{ else }} image: oneuptime/workflow:{{ .Env.APP_TAG }} {{ end }} restart: always env_file: - ./Common/.env - ./CommonServer/.env - ./Workflow/.env depends_on: - redis - postgres - notification links: - redis - postgres - notification {{ if eq .Env.ENVIRONMENT "development" }} volumes: - ./Workflow:/usr/src/app # Use node modules of the container and not host system. # https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder - /usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - /usr/src/Common/node_modules/ - /usr/src/CommonUI/node_modules/ - /usr/src/CommonServer/node_modules/ - /usr/src/Model/node_modules/ {{ end }} workers: ports: - '3452:3452' {{ if eq .Env.ENVIRONMENT "development" }} - '9654:9229' # Debugging port. {{ end }} {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./Workers/Dockerfile {{ else }} image: oneuptime/workers:{{ .Env.APP_TAG }} {{ end }} restart: always env_file: - ./Common/.env - ./CommonServer/.env - ./Workers/.env depends_on: - postgres - notification links: - postgres - notification volumes: - ./Certs:/usr/src/Certs {{ if eq .Env.ENVIRONMENT "development" }} - ./Workers:/usr/src/app # Use node modules of the container and not host system. # https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder - /usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - /usr/src/Common/node_modules/ - /usr/src/CommonUI/node_modules/ - /usr/src/CommonServer/node_modules/ - /usr/src/Model/node_modules/ {{ end }} {{ if .Env.GLOBAL_PROBE_1_NAME }} probe-1: {{ if eq .Env.ENVIRONMENT "development" }} ports: - '9655:9229' # Debugging port. {{ end }} {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./Probe/Dockerfile {{ else }} image: oneuptime/probe:{{ .Env.APP_TAG }} {{ end }} restart: always env_file: - ./Common/.env - ./CommonServer/.env - ./Probe/.env environment: - PROBE_NAME={{ .Env.GLOBAL_PROBE_1_NAME }} - PROBE_DESCRIPTION={{ .Env.GLOBAL_PROBE_1_DESCRIPTION }} - PROBE_KEY={{ .Env.GLOBAL_PROBE_1_KEY }} - PROBE_API_URL=http://probe-api:3400 depends_on: - probe-api links: - probe-api volumes: - ./Certs:/usr/src/Certs {{ if eq .Env.ENVIRONMENT "development" }} - ./Probe:/usr/src/app # Use node modules of the container and not host system. # https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder - /usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - /usr/src/Common/node_modules/ - /usr/src/CommonUI/node_modules/ - /usr/src/CommonServer/node_modules/ - /usr/src/Model/node_modules/ {{ end }} {{ end }} {{ if .Env.GLOBAL_PROBE_2_NAME }} probe-2: {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./Probe/Dockerfile {{ else }} image: oneuptime/probe:{{ .Env.APP_TAG }} {{ end }} restart: always env_file: - ./Common/.env - ./CommonServer/.env - ./Probe/.env environment: - PROBE_NAME={{ .Env.GLOBAL_PROBE_2_NAME }} - PROBE_DESCRIPTION={{ .Env.GLOBAL_PROBE_2_DESCRIPTION }} - PROBE_KEY={{ .Env.GLOBAL_PROBE_2_KEY }} - PROBE_API_URL=http://probe-api:3400 depends_on: - probe-api links: - probe-api volumes: - ./Certs:/usr/src/Certs {{ if eq .Env.ENVIRONMENT "development" }} - ./Probe:/usr/src/app # Use node modules of the container and not host system. # https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder - /usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - /usr/src/Common/node_modules/ - /usr/src/CommonUI/node_modules/ - /usr/src/CommonServer/node_modules/ - /usr/src/Model/node_modules/ {{ end }} {{ end }} identity: ports: - '3087:3087' {{ if eq .Env.ENVIRONMENT "development" }} - '9132:9229' # Debugging port. {{ end }} {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./Identity/Dockerfile {{ else }} image: oneuptime/identity:{{ .Env.APP_TAG }} {{ end }} restart: always env_file: - ./Common/.env - ./CommonServer/.env - ./Identity/.env depends_on: - redis - postgres - notification links: - redis - postgres - notification {{ if eq .Env.ENVIRONMENT "development" }} volumes: - ./Identity:/usr/src/app # Use node modules of the container and not host system. # https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder - /usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - /usr/src/Common/node_modules/ - /usr/src/CommonUI/node_modules/ - /usr/src/CommonServer/node_modules/ - /usr/src/Model/node_modules/ {{ end }} probe-api: ports: - '3400:3400' {{ if eq .Env.ENVIRONMENT "development" }} - '9932:9229' # Debugging port. {{ end }} {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./ProbeAPI/Dockerfile {{ else }} image: oneuptime/probe-api:{{ .Env.APP_TAG }} {{ end }} restart: always env_file: - ./Common/.env - ./CommonServer/.env - ./ProbeAPI/.env depends_on: - redis - postgres - notification links: - redis - postgres - notification {{ if eq .Env.ENVIRONMENT "development" }} volumes: - ./ProbeAPI:/usr/src/app # Use node modules of the container and not host system. # https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder - /usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - /usr/src/Common/node_modules/ - /usr/src/CommonUI/node_modules/ - /usr/src/CommonServer/node_modules/ - /usr/src/Model/node_modules/ {{ end }} file: ports: - '3125:3125' {{ if eq .Env.ENVIRONMENT "development" }} - '9012:9229' # Debugging port. {{ end }} {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./File/Dockerfile {{ else }} image: oneuptime/file:{{ .Env.APP_TAG }} {{ end }} restart: always env_file: - ./Common/.env - ./CommonServer/.env - ./File/.env depends_on: - postgres links: - postgres {{ if eq .Env.ENVIRONMENT "development" }} volumes: - ./File:/usr/src/app # Use node modules of the container and not host system. # https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder - /usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - /usr/src/Common/node_modules/ - /usr/src/CommonUI/node_modules/ - /usr/src/CommonServer/node_modules/ - /usr/src/Model/node_modules/ {{ end }} home: ports: - '1444:1444' {{ if eq .Env.ENVIRONMENT "development" }} - '9235:9229' # Debugging port. {{ end }} restart: always env_file: - ./Common/.env - ./CommonServer/.env - ./Home/.env {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./Home/Dockerfile {{ else }} image: oneuptime/home:{{ .Env.APP_TAG }} {{ end }} {{ if eq .Env.ENVIRONMENT "development" }} volumes: - ./Home:/usr/src/app # Use node modules of the container and not host system. # https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder - /usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - /usr/src/Common/node_modules/ - /usr/src/CommonUI/node_modules/ - /usr/src/CommonServer/node_modules/ - /usr/src/Model/node_modules/ {{ end }} api-reference: ports: - '1445:1445' {{ if eq .Env.ENVIRONMENT "development" }} - '9178:9229' # Debugging port. {{ end }} restart: always env_file: - ./Common/.env - ./CommonServer/.env - ./ApiReference/.env {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./ApiReference/Dockerfile {{ else }} image: oneuptime/api-reference:{{ .Env.APP_TAG }} {{ end }} {{ if eq .Env.ENVIRONMENT "development" }} volumes: - ./ApiReference:/usr/src/app # Use node modules of the container and not host system. # https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder - /usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - /usr/src/Common/node_modules/ - /usr/src/CommonUI/node_modules/ - /usr/src/CommonServer/node_modules/ - /usr/src/Model/node_modules/ {{ end }} {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "test") }} test-server: ports: - '3800:3800' {{ if eq .Env.ENVIRONMENT "development" }} - '9141:9229' # Debugging port. {{ end }} {{ if or (eq .Env.ENVIRONMENT "development") (eq .Env.ENVIRONMENT "ci") }} build: network: host context: . dockerfile: ./TestServer/Dockerfile {{ else }} image: oneuptime/test-server:{{ .Env.APP_TAG }} {{ end }} restart: always env_file: - ./Common/.env - ./CommonServer/.env - ./TestServer/.env volumes: - ./TestServer:/usr/src/app # Use node modules of the container and not host system. # https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder - /usr/src/app/node_modules/ - ./Common:/usr/src/Common - ./Model:/usr/src/Model - ./CommonServer:/usr/src/CommonServer - ./CommonUI:/usr/src/CommonUI - /usr/src/Common/node_modules/ - /usr/src/CommonUI/node_modules/ - /usr/src/CommonServer/node_modules/ - /usr/src/Model/node_modules/ {{ end }} nginx: depends_on: - identity - accounts - dashboard-api - dashboard - home - notification restart: always image: nginx:1.23.3-alpine ports: - '80:80' - '443:443' volumes: - ./Nginx/default.conf:/etc/nginx/conf.d/default.conf - ./Certs:/etc/nginx/certs volumes: postgres: clickhouse: {{ if eq .Env.ENVIRONMENT "development" }} # Add volumes to skip node_modules. dashboardApiNodeModules: dashboardApiCommonNodeModules: dashboardApiCommonUINodeModules: dashboardApiCommonServerNodeModules: dashboardApiModelNodeModules: {{ end }}