-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.traefik.yml
More file actions
69 lines (61 loc) · 2.35 KB
/
docker-compose.traefik.yml
File metadata and controls
69 lines (61 loc) · 2.35 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
services:
clientpublicip-server:
build:
context: ./src
dockerfile: Dockerfile
restart: unless-stopped
container_name: ${STACK_NAME}_SERVER
environment:
- TZ=${TIME_ZONE}
- SERVICE_HOSTNAME=${SERVICE_HOSTNAME}
- RATE_LIMIT=${RATE_LIMIT}
- SERVER_PORT=8080
- GEOIP_DB_PATH=/app/data/GeoLite2-Country.mmdb
expose:
- 8080/tcp
volumes:
- geoip-data:/app/data:ro,Z
depends_on:
geoip-updater:
condition: service_started
required: false
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.clientpublicip-cors.headers.accessControlAllowOriginList=*"
- "traefik.http.routers.clientpublicip-web.rule=Host(`${SERVICE_HOSTNAME}`) || Host(`v4.${SERVICE_HOSTNAME}`) || Host(`v6.${SERVICE_HOSTNAME}`)"
- "traefik.http.routers.clientpublicip-web.entrypoints=web"
- "traefik.http.routers.clientpublicip-web.middlewares=clientpublicip-cors"
- "traefik.http.routers.clientpublicip-web.service=clientpublicip"
- "traefik.http.routers.clientpublicip-websecure.rule=Host(`${SERVICE_HOSTNAME}`) || Host(`v4.${SERVICE_HOSTNAME}`) || Host(`v6.${SERVICE_HOSTNAME}`)"
- "traefik.http.routers.clientpublicip-websecure.entrypoints=web-secure"
- "traefik.http.routers.clientpublicip-websecure.middlewares=clientpublicip-cors"
- "traefik.http.routers.clientpublicip-websecure.tls=true"
- "traefik.http.routers.clientpublicip-websecure.tls.certresolver=letsencrypt"
- "traefik.http.routers.clientpublicip-websecure.service=clientpublicip"
- "traefik.http.services.clientpublicip.loadBalancer.server.port=8080"
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:8080/raw"]
interval: 30s
timeout: 3s
start_period: 5s
retries: 3
networks:
proxy:
geoip-updater:
image: maxmindinc/geoipupdate:latest
container_name: ${STACK_NAME}_GEOIP_UPDATER
restart: unless-stopped
environment:
- GEOIPUPDATE_ACCOUNT_ID=${MAXMIND_ACCOUNT_ID}
- GEOIPUPDATE_LICENSE_KEY=${MAXMIND_LICENSE_KEY}
- GEOIPUPDATE_EDITION_IDS=GeoLite2-Country
- GEOIPUPDATE_FREQUENCY=${GEOIP_UPDATE_FREQUENCY:-168}
volumes:
- geoip-data:/usr/share/GeoIP:Z
volumes:
geoip-data:
name: ${STACK_NAME}_geoip_data
networks:
proxy:
name: ${PROXY_NETWORK}
external: true