/
docker-compose.prod.yml
89 lines (78 loc) · 3.28 KB
/
docker-compose.prod.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
version: "3.8"
services:
server:
build:
target: prod-stage
# Run the worker application as a separate container in production
server_worker:
image: nstoik/fm_server:${FM_SERVER_TAG}
container_name: fm_server_worker
environment:
# Specify which application to run in the start.sh script
- FM_SERVER_WORKKER_RUN=true
- FM_SERVER_CONFIG=${FM_SERVER_CONFIG}
- FM_SERVER_LOG_LEVEL=${FM_SERVER_LOG_LEVEL}
- FM_DATABASE_CONFIG=${FM_DATABASE_CONFIG}
networks:
- farm_monitor
volumes:
- "logs:/logs"
depends_on:
- "database"
- "rabbitmq"
restart: on-failure
labels:
- custom.label=farm_monitor
api:
build:
target: prod-stage
labels:
- "traefik.http.routers.fm_api.rule=Host(`${TRAEFIK_DOMAIN}`) && PathPrefix(`/api`)"
- "traefik.http.routers.fm_api.entrypoints=websecure"
- "traefik.http.routers.fm_api.tls.certresolver=letsencrypt"
frontend:
labels:
- "traefik.http.routers.fm_frontend.rule=Host(`${TRAEFIK_DOMAIN}`) && PathPrefix(`/frontend`)"
- "traefik.http.routers.fm_frontend.entrypoints=websecure"
- "traefik.http.routers.fm_frontend.tls.certresolver=letsencrypt"
# traefik contrainer configuration below
traefik:
ports:
- 80:80
- 443:443
# The Web UI
- "8080:8080"
# for RabbitMQ
- "5672:5672"
# For the presence notifer
#- "5554:5554/udp"
volumes:
- ./traefik/traefik.prod.yml:/etc/traefik/traefik.yml
labels:
- "traefik.enable=true"
- "traefik.http.routers.fm_traefik.rule=Host(`traefik.${TRAEFIK_DOMAIN}`)"
- "traefik.http.routers.fm_traefik.entrypoints=websecure"
- "traefik.http.routers.fm_traefik.tls.certresolver=letsencrypt"
- "traefik.http.routers.fm_traefik.service=api@internal"
# standard docker containers below
rabbitmq:
labels:
# RabbitMQ Management interface
- "traefik.http.routers.fm_rabbitmq.rule=Host(`${TRAEFIK_DOMAIN}`) && PathPrefix(`/rabbitmq`)"
- "traefik.http.routers.fm_rabbitmq.entrypoints=websecure"
- "traefik.http.routers.fm_rabbitmq.tls.certresolver=letsencrypt"
# RabbitMQ
#- "traefik.tcp.routers.fm_rabbitmq-connect.rule=HostSNI(`${TRAEFIK_DOMAIN}`)"
#- "traefik.tcp.routers.fm_rabbitmq-connect.tls.certresolver=letsencrypt"
# don't use ssl for rabbitmq connections (for now)
- "traefik.tcp.routers.fm_rabbitmq-connect.rule=HostSNI(`*`)"
flower:
labels:
- "traefik.http.routers.fm_flower.rule=Host(`${TRAEFIK_DOMAIN}`) && PathPrefix(`/flower`)"
- "traefik.http.routers.fm_flower.entrypoints=websecure"
- "traefik.http.routers.fm_flower.tls.certresolver=letsencrypt"
pgadmin:
labels:
- "traefik.http.routers.fm_pgadmin.rule=Host(`${TRAEFIK_DOMAIN}`) && PathPrefix(`/pgadmin`)"
- "traefik.http.routers.fm_pgadmin.entrypoints=websecure"
- "traefik.http.routers.fm_pgadmin.tls.certresolver=letsencrypt"