-
Notifications
You must be signed in to change notification settings - Fork 34
Expand file tree
/
Copy pathdocker-compose.prod.yml
More file actions
125 lines (120 loc) · 4.14 KB
/
Copy pathdocker-compose.prod.yml
File metadata and controls
125 lines (120 loc) · 4.14 KB
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
services:
traefik:
image: traefik:latest
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- proxy
ports:
- 80:80
- 443:443
environment:
- CF_DNS_API_TOKEN=${CF_DNS_API_TOKEN}
# If you choose to use an API Key instead of a Token, specify your email as well
# - CF_API_EMAIL=user@example.com
# - CF_API_KEY=YOUR_API_KEY
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /home/ubuntu/traefik/traefik.yml:/traefik.yml:ro # Path to your traefik.yml file
- /home/ubuntu/traefik/acme.json:/acme.json # Path to your acme.json file
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.entrypoints=http"
- "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
- "traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto=https"
- "traefik.http.routers.traefik.middlewares=traefik-https-redirect"
- "traefik.http.routers.traefik-secure.entrypoints=https"
- "traefik.http.routers.traefik-secure.tls=true"
- "traefik.http.routers.traefik-secure.tls.certresolver=cloudflare"
- "traefik.http.routers.traefik-secure.tls.domains[0].main=backend.scicommons.org"
- "traefik.http.routers.traefik-secure.service=api@internal"
web:
build: .
restart: unless-stopped
command: >
sh -c "redis-server --daemonize yes &&
poetry run python manage.py migrate &&
poetry run uvicorn myapp.asgi:application --host 0.0.0.0 --port 8000 --workers 2 --proxy-headers"
networks:
- proxy
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /home/ubuntu/logs:/logs
labels:
- "traefik.enable=true"
- "traefik.http.routers.web.entrypoints=http"
- "traefik.http.routers.web.rule=Host(`backend.scicommons.org`)"
- "traefik.http.middlewares.web-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.web.middlewares=web-https-redirect"
- "traefik.http.routers.web-secure.entrypoints=https"
- "traefik.http.routers.web-secure.rule=Host(`backend.scicommons.org`)"
- "traefik.http.routers.web-secure.tls=true"
- "traefik.http.routers.web-secure.service=web"
- "traefik.http.services.web.loadbalancer.server.port=8000"
- "traefik.docker.network=proxy"
depends_on:
- redis
- celery
env_file:
- .env.prod
environment:
- ENVIRONMENT=prod
redis:
image: redis:alpine
restart: unless-stopped
ports:
- "6379:6379"
networks:
- proxy
celery:
build: .
restart: unless-stopped
command: celery -A myapp worker --loglevel=info --concurrency=5
depends_on:
- redis
networks:
- proxy
env_file:
- .env.prod
volumes:
- /home/ubuntu/logs:/logs
environment:
- ENVIRONMENT=prod
tornado:
build:
context: .
dockerfile: Dockerfile.tornado
restart: unless-stopped
command: python tornado_server.py
ports:
- "8888:8888"
depends_on:
- redis
networks:
- proxy
env_file:
- .env.prod
volumes:
- /home/ubuntu/logs:/logs
labels:
- "traefik.enable=true"
- "traefik.http.routers.tornado.entrypoints=http"
- "traefik.http.routers.tornado.rule=Host(`backend.scicommons.org`) && PathPrefix(`/realtime`)"
- "traefik.http.middlewares.tornado-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.tornado.middlewares=tornado-https-redirect"
- "traefik.http.routers.tornado-secure.entrypoints=https"
- "traefik.http.routers.tornado-secure.rule=Host(`backend.scicommons.org`) && PathPrefix(`/realtime`)"
- "traefik.http.routers.tornado-secure.tls=true"
- "traefik.http.routers.tornado-secure.service=tornado"
- "traefik.http.services.tornado.loadbalancer.server.port=8888"
- "traefik.docker.network=proxy"
environment:
- ENVIRONMENT=prod
networks:
proxy:
external: true
name: proxy-shared