1+ version : " 3.3"
2+
3+ # For running project with own domain (IT IS REQUIRED) with https (traefic as proxy)
4+ #
5+ # docker-compose -f docker-compose.prod.yml up -d
6+ #
7+ # It should be available on HOST_NAME adress, for example
8+ # 1. https://example.com
9+ # 2. http://example.com -> redirected to https://example.com
10+ # QUICK NOTES
11+ # a) By default log_level = DEBUG in traefic and it uses test certificates
12+ # b) provide your domain name in MAIN_DOMAIN and email DEFAULT_FROM_EMAIL in .env file
13+
14+ services :
15+ db :
16+ restart : always
17+ image : postgres
18+ volumes :
19+ - ./data/db:/var/lib/postgresql/data
20+ environment :
21+ - POSTGRES_DB=${POSTGRES_DB}
22+ - POSTGRES_USER=${POSTGRES_USER}
23+ - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
24+ env_file :
25+ - .env
26+ ports :
27+ - ${POSTGRES_PORT}:5432
28+ healthcheck :
29+ test : ["CMD-SHELL", "pg_isready -U postgres"]
30+ interval : 5s
31+ timeout : 5s
32+ retries : 5
33+
34+ web :
35+ depends_on :
36+ - db
37+ restart : always
38+ build :
39+ context : ./
40+ dockerfile : Dockerfile
41+ labels :
42+ - " traefik.enable=true"
43+ - " traefik.http.routers.web.rule=Host(`${MAIN_DOMAIN}`)"
44+ - " traefik.http.routers.web.entrypoints=websecure"
45+ - " traefik.http.routers.web.tls.certresolver=myresolver"
46+ - " traefik.http.services.web.loadbalancer.server.port=80"
47+ env_file :
48+ - .env
49+
50+ traefik :
51+ image : " traefik:v2.4"
52+ container_name : " traefik"
53+ command :
54+ #
55+ # comment line below after debugging!
56+ - " --log.level=DEBUG"
57+ - " --api.dashboard=false"
58+ - " --providers.docker=true"
59+ - " --providers.docker.exposedbydefault=false"
60+ - " --entrypoints.web.address=:80"
61+ - " --entrypoints.websecure.address=:443"
62+ - " --entrypoints.web.http.redirections.entryPoint.to=websecure"
63+ - " --entrypoints.web.http.redirections.entryPoint.scheme=https"
64+ - " --certificatesresolvers.myresolver.acme.httpchallenge=true"
65+ - " --certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
66+ #
67+ # test certificates, comment line below to use real certificates
68+ - " --certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
69+ - " --certificatesresolvers.myresolver.acme.email=${DEFAULT_FROM_EMAIL}"
70+ - " --certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
71+ ports :
72+ - " 80:80"
73+ - " 443:443"
74+ volumes :
75+ - " ./letsencrypt:/letsencrypt"
76+ - " /var/run/docker.sock:/var/run/docker.sock:ro"
0 commit comments