-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
168 lines (161 loc) · 4.97 KB
/
Copy pathdocker-compose.yml
File metadata and controls
168 lines (161 loc) · 4.97 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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
services:
webapp:
image: kholinchen/dizkaz:$APP_VERSION
container_name: "webapp-app-1"
restart: always
environment:
DB_CONTAINER_NAME: "webapp-db-1"
DB_HOST: "db"
DB_PORT: 5432
DOMAIN_NAME: $DOMAIN_NAME
DB_NAME: $DB_NAME
DB_USER: $DB_USER
DB_PASSWORD: $DB_PASSWORD
ADMIN_EMAIL: $ADMIN_EMAIL
USER_DEFAULT_PASSWORD: $USER_DEFAULT_PASSWORD
APP_PORT: $APP_PORT
APP_OUTER_PORT: $APP_OUTER_PORT
NGINX_PORT: $NGINX_PORT
NGINX_SSL_PORT: $NGINX_SSL_PORT
SESSION_SECRET: $SESSION_SECRET
CSRF_SECRET: $CSRF_SECRET
REDIS_HOST: "redis"
REDIS_PORT: 6379
REDIS_USER: $REDIS_USER
REDIS_PASSWORD: $REDIS_PASSWORD
REDISCLI_AUTH: $REDISCLI_AUTH
SMTP_SERVER: $SMTP_SERVER
SMTP_SERVER_PORT: $SMTP_SERVER_PORT
SMTP_USER: $SMTP_USER
SMTP_PASSWORD: $SMTP_PASSWORD
SMTP_SENDER: $SMTP_SENDER
GOOGLE_CLIENT_ID: $GOOGLE_CLIENT_ID
GOOGLE_CLIENT_SECRET: $GOOGLE_CLIENT_SECRET
GITHUB_CLIENT_ID: $GITHUB_CLIENT_ID
GITHUB_CLIENT_SECRET: $GITHUB_CLIENT_SECRET
APP_VERSION: $APP_VERSION
CLOUDFLARE_SITE_KEY: $CLOUDFLARE_SITE_KEY
CLOUDFLARE_SECRET: $CLOUDFLARE_SECRET
volumes:
- ./manage_static:/app/manage_static
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
links:
- db
- redis
db:
image: postgres:15.4
container_name: "local-webapp-db"
restart: always
user: postgres
volumes:
- dproject_db-data:/var/lib/postgresql/data
- ./config/db/initdb:/docker-entrypoint-initdb.d:ro
- ./config/db:/tmp/data:ro
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=$PG_PASSWORD
- DB_NAME=$DB_NAME
- DB_USER=$DB_USER
- DB_PASSWORD=$DB_PASSWORD
- USER_DEFAULT_PASSWORD=$USER_DEFAULT_PASSWORD
- PGTZ=UTC
ports:
- $DB_PORT:5432
healthcheck:
test: ["CMD", "pg_isready"]
interval: 10s
timeout: 5s
retries: 5
nginx:
image: nginx:1.25.2-alpine
container_name: "local-nginx"
restart: always
environment:
- APP_LOCAL_HOST=webapp
- APP_PORT=$APP_PORT
- ANUBIS_LOCAL_HOST=anubis
- ANUBIS_PORT=$ANUBIS_PORT
# - DOMAIN_NAME=$DOMAIN_NAME
- SECOND_LEVEL_DOMAIN_NAME=$SECOND_LEVEL_DOMAIN_NAME
volumes:
- ./static:/data/static
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./nginx/templates/webapp.conf.template:/etc/nginx/templates/webapp.conf.template:ro
- ./nginx/40-reload-cron.sh:/docker-entrypoint.d/40-reload-cron.sh:ro
- ./nginx/logs:/etc/nginx/logs
- ./nginx/certbot/www:/var/www/certbot
- ./nginx/certbot/conf:/etc/letsencrypt
ports:
- $NGINX_SSL_PORT:443
- $NGINX_PORT:80
depends_on:
# - anubis
- webapp
goaccess:
image: allinurl/goaccess:1.7.2
container_name: "local-goaccess"
restart: always
entrypoint: 'sh -c "/bin/goaccess /data/logs/access.log -o /data/static/report.html --real-time-html --port=9880 --ssl-cert=$$SSL_CERT --ssl-key=$$SSL_KEY"'
environment:
- TZ="China/Shanghai"
- SSL_CERT=/etc/letsencrypt/live/${SECOND_LEVEL_DOMAIN_NAME}/fullchain.pem
- SSL_KEY=/etc/letsencrypt/live/${SECOND_LEVEL_DOMAIN_NAME}/privkey.pem
volumes:
- /var/www/goaccess:/var/www/goaccess:rw
- ./geoip/GeoLite2-City.mmdb:/data/GeoLite2-City.mmdb
- ./nginx/certbot/conf:/etc/letsencrypt
- ./goaccess.conf:/etc/goaccess/goaccess.conf
- ./nginx/logs:/data/logs
- ./manage_static:/data/static
ports:
- "9880:9880"
certbot:
image: certbot/certbot
container_name: "local-certbot"
restart: always
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew --webroot -w /var/www/certbot; sleep 12h & wait $${!}; done;'"
volumes:
- ./nginx/certbot/conf:/etc/letsencrypt
- ./nginx/certbot/www:/var/www/certbot
# anubis:
# image: ghcr.io/techarohq/anubis:latest
# environment:
# BIND: ":8080"
# DIFFICULTY: "4"
# METRICS_BIND: ":9090"
# SERVE_ROBOTS_TXT: "true"
# TARGET: http://webapp:${APP_PORT}
# POLICY_FNAME: "/data/cfg/bot-policy.yaml"
# OG_PASSTHROUGH: "true"
# OG_EXPIRY_TIME: "24h"
# ports:
# - $ANUBIS_PORT:8080
# - $ANUBIS_METRIC_PORT:9090
# volumes:
# - "./bot-policy.yaml:/data/cfg/bot-policy.yaml:ro"
# depends_on:
# - webapp
redis:
image: kholinchen/credis:latest
container_name: "local-redis"
environment:
- REDIS_USER=$REDIS_USER
- REDIS_PASSWORD=$REDIS_PASSWORD
- REDISCLI_AUTH=$REDISCLI_AUTH
volumes:
- dproject_redis-data:/data
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
volumes:
dproject_db-data:
external: true
dproject_redis-data:
external: true