|
1 | 1 | services:
|
2 |
| - watchtower: |
3 |
| - image: containrrr/watchtower |
4 |
| - command: |
5 |
| - - "--label-enable" |
6 |
| - - "--interval" |
7 |
| - - "30" |
8 |
| - - "--rolling-restart" |
9 |
| - volumes: |
10 |
| - - /var/run/docker.sock:/var/run/docker.sock |
11 |
| - reverse-proxy: |
12 |
| - image: traefik:v3.1 |
13 |
| - command: |
14 |
| - - "--providers.docker" |
15 |
| - - "--providers.docker.exposedbydefault=false" |
16 |
| - - "--entryPoints.websecure.address=:443" |
17 |
| - - "--certificatesresolvers.myresolver.acme.tlschallenge=true" |
18 |
| - - "--certificatesresolvers.myresolver.acme.email=elliott@zenful.site" |
19 |
| - - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" |
20 |
| - - "--entrypoints.web.address=:80" |
21 |
| - - "--entrypoints.web.http.redirections.entrypoint.to=websecure" |
22 |
| - - "--entrypoints.web.http.redirections.entrypoint.scheme=https" |
23 |
| - ports: |
24 |
| - - "80:80" |
25 |
| - - "443:443" |
26 |
| - volumes: |
27 |
| - - letsencrypt:/letsencrypt |
28 |
| - - /var/run/docker.sock:/var/run/docker.sock |
| 2 | + |
29 | 3 | web:
|
30 | 4 | image: ghcr.io/dreamsofcode-io/zenstats:latest
|
31 |
| - labels: |
32 |
| - - "traefik.enable=true" |
33 |
| - - "traefik.http.middlewares.web-ratelimit.ratelimit.average=20" |
34 |
| - - "traefik.http.routers.web.rule=Host(`zenful.site`)" |
35 |
| - - "traefik.http.routers.web.entrypoints=websecure" |
36 |
| - - "traefik.http.routers.web.tls.certresolver=myresolver" |
37 |
| - - "traefik.http.routers.web.middlewares=web-ratelimit" |
38 |
| - # Enable watchtower |
39 |
| - - "com.centurylinklabs.watchtower.enable=true" |
40 | 5 | environment:
|
41 | 6 | - POSTGRES_HOST=db
|
42 | 7 | - POSTGRES_PASSWORD=mysecretpassword
|
43 | 8 | - POSTGRES_USER=postgres
|
44 | 9 | - POSTGRES_DB=app
|
45 | 10 | - POSTGRES_PORT=5432
|
46 | 11 | - POSTGRES_SSLMODE=disable
|
47 |
| - deploy: |
48 |
| - mode: replicated |
49 |
| - replicas: 3 |
| 12 | + ports: |
| 13 | + - "80:8080" |
50 | 14 | restart: always
|
51 | 15 | depends_on:
|
52 |
| - db: |
53 |
| - condition: service_healthy |
| 16 | + - db |
| 17 | + |
54 | 18 | db:
|
55 | 19 | image: postgres
|
56 | 20 | restart: always
|
57 | 21 | user: postgres
|
58 | 22 | volumes:
|
59 | 23 | - db-data:/var/lib/postgresql/data
|
60 |
| - secrets: |
61 |
| - - db-password |
62 | 24 | environment:
|
63 | 25 | - POSTGRES_DB=app
|
64 | 26 | - POSTGRES_PASSWORD=mysecretpassword
|
65 |
| - expose: |
66 |
| - - 5432 |
67 | 27 | healthcheck:
|
68 | 28 | test: [ "CMD", "pg_isready" ]
|
69 | 29 | interval: 10s
|
70 | 30 | timeout: 5s
|
71 | 31 | retries: 5
|
| 32 | + |
72 | 33 | volumes:
|
73 | 34 | db-data:
|
74 | 35 | letsencrypt:
|
0 commit comments