-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdocker-compose.yml
140 lines (134 loc) · 4.42 KB
/
docker-compose.yml
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
services:
nocodb:
image: nocodb/nocodb-ee:latest
env_file: docker.env
deploy:
mode: replicated
replicas: 1
depends_on:
- db
- redis
- minio
restart: unless-stopped
volumes:
- ./nocodb:/usr/app/data
labels:
- "com.centurylinklabs.watchtower.enable=true"
- "traefik.enable=true"
- "traefik.http.routers.nocodb.rule=Host(`{{PLACEHOLDER_NOCODB_DOMAIN}}`)"
- "traefik.http.routers.nocodb.entrypoints=websecure"
- "traefik.http.routers.nocodb.tls=true"
- "traefik.http.routers.nocodb.tls.certresolver=letsencrypt"
networks:
- nocodb-network
worker:
image: nocodb/nocodb-ee:latest
env_file: docker.env
environment:
- NC_WORKER_CONTAINER=true
networks:
- nocodb-network
depends_on:
- nocodb
restart: unless-stopped
volumes:
- ./nocodb:/usr/app/data
labels:
- "com.centurylinklabs.watchtower.enable=true"
traefik:
image: traefik:v3.1
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--entrypoints.web.address=:80"
- "--providers.docker.exposedByDefault=false"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.minio.address=:9000"
- "--entrypoints.minio-console.address=:9001"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.letsencrypt.acme.email=contact@{{PLACEHOLDER_NOCODB_DOMAIN}}"
- "--certificatesresolvers.letsencrypt.acme.storage=/etc/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
restart: unless-stopped
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- ./letsencrypt:/etc/letsencrypt
networks:
- nocodb-network
db:
image: postgres:16.6
environment:
POSTGRES_USER: "{{PLACEHOLDER_PG_USER}}"
POSTGRES_PASSWORD: "{{PLACEHOLDER_PG_PASSWORD}}"
POSTGRES_DB: postgres
volumes:
- ./postgres:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
networks:
- nocodb-network
redis:
image: redis:latest
restart: unless-stopped
command:
- /bin/sh
- -c
- redis-server
healthcheck:
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
volumes:
- ./redis:/data
networks:
- nocodb-network
minio:
image: minio/minio:latest
restart: unless-stopped
entrypoint: /bin/sh
volumes:
- ./minio:/export
command: -c "mkdir -p /export/nocodb && /usr/bin/minio server /export --console-address \":9001\""
environment:
- MINIO_ROOT_USER=nc_minio_user
- MINIO_ROOT_PASSWORD={{PLACEHOLDER_MINIO_ROOT_PASSWORD}}
- MINIO_BROWSER_REDIRECT_URL=https://{{PLACEHOLDER_MINIO_DOMAIN}}/minio/ui/
- MINIO_SERVER_URL=https://{{PLACEHOLDER_MINIO_DOMAIN}}
labels:
# Main MinIO Service (Port 9000)
- "traefik.enable=true"
- "traefik.http.services.minio.loadbalancer.server.port=9000"
- "traefik.http.routers.minio.rule=Host(`{{PLACEHOLDER_MINIO_DOMAIN}}`)"
- "traefik.http.routers.minio.entrypoints=websecure"
- "traefik.http.routers.minio.tls=true"
- "traefik.http.routers.minio.tls.certresolver=letsencrypt"
- "traefik.http.routers.minio.service=minio"
# MinIO Console Service (Port 9001)
- "traefik.http.services.minio-console.loadbalancer.server.port=9001"
- "traefik.http.routers.minio-console.rule=Host(`{{PLACEHOLDER_MINIO_DOMAIN}}`) && PathPrefix(`/minio/ui`)"
- "traefik.http.middlewares.minio-console-stripprefixregex.stripprefixregex.regex=^/minio/ui"
- "traefik.http.routers.minio-console.middlewares=minio-console-stripprefixregex"
- "traefik.http.routers.minio-console.entrypoints=websecure"
- "traefik.http.routers.minio-console.tls=true"
- "traefik.http.routers.minio-console.tls.certresolver=letsencrypt"
- "traefik.http.routers.minio-console.service=minio-console"
networks:
- nocodb-network
watchtower:
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --schedule "0 2 * * 6" --cleanup
restart: unless-stopped
networks:
- nocodb-network
volumes:
redis:
networks:
nocodb-network:
driver: bridge