1
1
---
2
2
3
+ x-common : &x-common
4
+ privileged : false
5
+ volumes :
6
+ - /etc/localtime:/etc/localtime:ro
7
+ security_opt :
8
+ - no-new-privileges=true
9
+ tmpfs :
10
+ - /tmp:rw,noexec,nosuid,size=32m
11
+ ulimits :
12
+ nproc : 6144
13
+ nofile :
14
+ soft : 6000
15
+ hard : 12000
16
+
3
17
services :
4
18
dockerproxy :
5
19
image : tecnativa/docker-socket-proxy:edge
@@ -41,11 +55,13 @@ services:
41
55
TZ : " Europe/Paris"
42
56
43
57
traefik :
58
+ << : *x-common
44
59
image : traefik:saintmarcelin
45
60
restart : unless-stopped
46
61
container_name : traefik
47
62
networks :
48
63
- dockerproxynet
64
+ - oueb
49
65
ports :
50
66
- target : 80
51
67
published : 80
@@ -60,7 +76,6 @@ services:
60
76
- ./conf/traefik.yml:/etc/traefik/traefik.yml:ro
61
77
- ./conf/traefikdynamic:/etc/traefik/dynamic:ro
62
78
- ./logs/traefik.log:/etc/traefik/applog.log
63
- - /etc/localtime:/etc/localtime:ro
64
79
# - /var/run/docker.sock:/var/run/docker.sock:ro
65
80
environment :
66
81
TZ : " Europe/Paris"
@@ -75,54 +90,107 @@ services:
75
90
- dockerproxy
76
91
77
92
giteadb :
78
- image : mysql:8
79
- restart : unless-stopped
93
+ << : *x-common
94
+ image : rapidfort/postgresql-official:15.5-bullseye
80
95
container_name : giteadb
96
+ restart : unless-stopped
81
97
environment :
82
- MYSQL_ROOT_PASSWORD : ${SQLROOTGITEA}
83
- MYSQL_USER : ${SQLUSERGITEA}
84
- MYSQL_PASSWORD : ${SQLPASSWORDGITEA}
85
- MYSQL_DATABASE : ${SQLDBGITEA}
98
+ POSTGRES_PASSWORD_FILE : /run/secrets/pgsql_password
99
+ POSTGRES_DB : giteabase
100
+ networks :
101
+ - backendgitea
86
102
volumes :
87
- - ./giteaSqldata :/var/lib/mysql
103
+ - giteadbdata :/var/lib/postgresql/data
88
104
healthcheck :
89
- test : ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
90
- timeout : 20s
91
- retries : 10
105
+ test : ["CMD-SHELL", "pg_isready -d giteabase -U postgres"]
106
+ start_period : 20s
107
+ interval : 30s
108
+ timeout : 5s
109
+ retries : 3
110
+ mem_limit : 256m
111
+ memswap_limit : 256m
112
+ mem_reservation : 128m
113
+ secrets :
114
+ - pgsql_password
92
115
93
- sqlexportergitea :
94
- image : prom/mysqld-exporter
116
+ giteadb-pgsql_exporter :
117
+ << : *x-common
118
+ container_name : giteadb-pgsql_exporter
119
+ image : quay.io/prometheuscommunity/postgres-exporter:v0.13.2
95
120
restart : unless-stopped
96
- container_name : sqlexportergitea
121
+ networks :
122
+ - backendgitea
97
123
environment :
98
- DATA_SOURCE_NAME : root:${SQLROOTGITEA}@( giteadb:3306)/${SQLDBGITEA}
99
- links :
100
- - giteadb
124
+ DATA_SOURCE_URI : giteadb:5432?sslmode=disable
125
+ DATA_SOURCE_USER : postgres
126
+ DATA_SOURCE_PASS_FILE : /run/secrets/pgsql_password
101
127
depends_on :
102
- - giteadb
103
- mem_limit : 128m
104
- mem_reservation : 64m
128
+ giteadb :
129
+ condition : service_healthy
130
+ mem_limit : 64m
131
+ memswap_limit : 64m
132
+ mem_reservation : 32m
133
+ secrets :
134
+ - pgsql_password
105
135
106
136
gitea :
107
- image : gitea/gitea:1.19
108
- restart : unless-stopped
137
+ << : *x-common
109
138
container_name : gitea
139
+ image : gitea/gitea:1.21-rootless
140
+ restart : unless-stopped
110
141
environment :
111
- GITEA__database__DB_TYPE : mysql
112
- GITEA__database__HOST : giteadb:3306
113
- GITEA__database__NAME : ${SQLDBGITEA}
114
- GITEA__database__USER : ${SQLUSERGITEA}
115
- GITEA__database__PASSWD : ${SQLPASSWORDGITEA}
142
+ GITEA__database__DB_TYPE : postgres
143
+ GITEA__database__HOST : giteadb:5432
144
+ GITEA__database__NAME : giteabase
145
+ GITEA__database__USER : postgres
146
+ GITEA__database__PASSWD__FILE : /run/secrets/pgsql_password
147
+ GITEA__mailer__ENABLED : true
148
+ GITEA__mailer__FROM : no-reply@your-domain.net
149
+ GITEA__mailer__MAILER_TYPE : smtp
150
+ GITEA__mailer__SMTP_ADDR : mail.domain.com
151
+ GITEA__mailer__IS_TLS_ENABLED : true
152
+ GITEA__mailer__USER : no-reply@your-domain.net
153
+ GITEA__mailer__PASSWD__FILE : /run/secrets/smtp_password
154
+ USER_UID : 1000
155
+ USER_GID : 1000
156
+ networks :
157
+ - backendgitea
158
+ - oueb
116
159
volumes :
117
- - ./gitea:/data
118
- - /etc/timezone:/etc/timezone:ro
119
- - /etc/localtime:/etc/localtime:ro
160
+ - giteadata:/var/lib/gitea
161
+ - ./configGitea:/etc/gitea
120
162
depends_on :
121
- - giteadb
163
+ giteadb :
164
+ condition : service_healthy
165
+ healthcheck :
166
+ test : ["CMD", "curl", "-f", "http://localhost:3000/api/healthz"]
167
+ interval : 30s
168
+ timeout : 5s
169
+ retries : 3
170
+ mem_limit : 256m
171
+ memswap_limit : 256m
172
+ mem_reservation : 128m
173
+ secrets :
174
+ - pgsql_password
175
+ - smtp_password
176
+
177
+ secrets :
178
+ pgsql_password :
179
+ file : .secrets/pgsql_password.txt
180
+ smtp_password :
181
+ file : .secrets/smtp_password.txt
122
182
123
183
networks :
184
+ backendgitea :
185
+
124
186
dockerproxynet :
125
187
name : dockerproxynet
126
188
ipam :
127
189
config :
128
190
- subnet : 172.16.10.0/24
191
+
192
+ oueb :
193
+
194
+ volumes :
195
+ giteadata :
196
+ giteadbdata :
0 commit comments