Skip to content

Commit 62b70f7

Browse files
committed
Update docker-compose.yml
1 parent 23a2c73 commit 62b70f7

File tree

1 file changed

+48
-29
lines changed

1 file changed

+48
-29
lines changed

docker-compose.yml

Lines changed: 48 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ services:
44

55
joomla:
66
depends_on:
7-
- database
8-
image: 'joomla:${PHP_IMAGE_NAME}'
7+
database:
8+
condition: service_healthy
9+
image: joomla:${PHP_IMAGE_NAME}
910
container_name: joomla
1011
networks:
11-
- backend
12+
- backend
1213
volumes:
1314
- 'html:${WEBSERVER_DOC_ROOT}'
1415
- type: bind
@@ -27,6 +28,11 @@ services:
2728
links:
2829
- database
2930
- redis
31+
healthcheck:
32+
test: ["CMD-SHELL", "/bin/pidof php-fpm > /dev/null || exit 1"]
33+
interval: 5s
34+
timeout: 5s
35+
retries: 20
3036
environment:
3137
JOOMLA_DB_HOST: 'database'
3238
JOOMLA_DB_USER: '${JOOMLA_DB_USER}'
@@ -39,17 +45,17 @@ services:
3945

4046
webserver:
4147
depends_on:
42-
- joomla
43-
image: 'httpd:latest'
48+
- varnish
49+
image: httpd:latest
4450
container_name: webserver
4551
networks:
46-
- backend
52+
- backend
4753
volumes:
4854
- 'html:${WEBSERVER_DOC_ROOT}'
4955
- type: bind
5056
source: ./webserver
51-
target: '${HTTPD_PREFIX}/conf'
52-
hostname: webserver
57+
target: '${HTTPD_PREFIX}/conf'
58+
hostname: webserver
5359
restart: unless-stopped
5460
ports:
5561
- '8070:80'
@@ -63,15 +69,20 @@ services:
6369
certbot:
6470
depends_on:
6571
- proxy
66-
image: certbot/certbot
72+
image: certbot/certbot:latest
6773
container_name: certbot
6874
networks:
6975
- backend
7076
volumes:
7177
- 'certbot-etc:${LETSENCRYPT_CONF_PREFIX}'
7278
- 'certbot-var:/var/lib/letsencrypt'
73-
- '/tmp/acme-challenge:/tmp/acme-challenge'
79+
- '/tmp/acme-challenge:/tmp/acme-challenge'
7480
restart: unless-stopped
81+
healthcheck:
82+
test: ["CMD-SHELL", "test -d ${LETSENCRYPT_CONF_PREFIX}/live/${DOMAIN_NAME} || exit 1"]
83+
interval: 5s
84+
timeout: 5s
85+
retries: 20
7586
environment:
7687
TZ: '${LOCAL_TIMEZONE}'
7788
entrypoint: /bin/sh -c "certbot certonly --webroot --webroot-path /tmp/acme-challenge --rsa-key-size 4096 --non-interactive --agree-tos --no-eff-email --force-renewal --email ${LETSENCRYPT_EMAIL} -d ${DOMAIN_NAME} -d www.${DOMAIN_NAME} -d mail.${DOMAIN_NAME};
@@ -106,25 +117,26 @@ services:
106117
- '80:80'
107118
- '443:443'
108119
links:
109-
- webserver
120+
- webserver
110121
environment:
111122
NGINX_HOST: ${DOMAIN_NAME}
112123
NGINX_PORT: 80
113124
TZ: '${LOCAL_TIMEZONE}'
114125
command: bash -c "/docker-entrypoint.sh nginx -v; sh /tmp/ssl-proxyconf.sh '${DOMAIN_NAME}' '${LETSENCRYPT_CONF_PREFIX}' '${PROXY_PREFIX}'"
115-
126+
116127
phpmyadmin:
117128
depends_on:
118-
- certbot
119-
image: phpmyadmin/phpmyadmin
129+
certbot:
130+
condition: service_healthy
131+
image: phpmyadmin:latest
120132
container_name: phpmyadmin
121133
networks:
122134
- backend
123135
- frontend
124136
volumes:
125137
- type: bind
126138
source: ./phpmyadmin/apache2/sites-available/default-ssl.conf
127-
target: '${APACHE_CONFDIR_PREFIX}/sites-available/default-ssl.conf'
139+
target: '${APACHE_CONFDIR_PREFIX}/sites-available/default-ssl.conf'
128140
- type: bind
129141
source: ./phpmyadmin/apache2/ports.conf
130142
target: '${APACHE_CONFDIR_PREFIX}/ports.conf'
@@ -133,13 +145,12 @@ services:
133145
target: '${LETSENCRYPT_CONF_PREFIX}/options-ssl-apache.conf'
134146
- type: bind
135147
source: ./phpmyadmin/config.user.inc.php
136-
target: '${PMA_CONF_FOLDER}/config.user.inc.php'
148+
target: '${PMA_CONF_FOLDER}/config.user.inc.php'
137149
- type: bind
138150
source: ./phpmyadmin/php/conf.d/security.ini
139151
target: '${PHP_INI_DIR_PREFIX}/php/conf.d/security.ini'
140152
- 'certbot-etc:${LETSENCRYPT_CONF_PREFIX}'
141153
hostname: phpmyadmin
142-
ipc: private
143154
restart: unless-stopped
144155
ports:
145156
- '9090:443'
@@ -160,9 +171,9 @@ services:
160171
mkdir -p ${WEBSERVER_DOC_ROOT}/../upload && chown www-data:www-data ${WEBSERVER_DOC_ROOT}/../upload && chmod a+w ${WEBSERVER_DOC_ROOT}/../upload; mkdir -p ${WEBSERVER_DOC_ROOT}/../save && chown www-data:www-data ${WEBSERVER_DOC_ROOT}/../save && chmod a+w ${WEBSERVER_DOC_ROOT}/../save;
161172
grep -qxF 'ServerName 127.0.0.1' ${APACHE_CONFDIR_PREFIX}/apache2.conf || echo -e '\\nServerName 127.0.0.1' >> ${APACHE_CONFDIR_PREFIX}/apache2.conf; grep -qe 'date.timezone = ${LOCAL_TIMEZONE}' ${PHP_INI_DIR_PREFIX}/php/conf.d/security.ini || echo 'date.timezone = ${LOCAL_TIMEZONE}' >> ${PHP_INI_DIR_PREFIX}/php/conf.d/security.ini;
162173
a2enmod ssl && a2ensite default-ssl && a2dissite 000-default && /docker-entrypoint.sh 'apache2-foreground'"
163-
174+
164175
database:
165-
image: '${DATABASE_IMAGE_NAME}:${DATABASE_VERSION}'
176+
image: ${DATABASE_IMAGE_NAME}:${DATABASE_VERSION}
166177
container_name: database
167178
networks:
168179
- backend
@@ -177,6 +188,11 @@ services:
177188
restart: unless-stopped
178189
ports:
179190
- '3306:3306'
191+
healthcheck:
192+
test: ["CMD-SHELL", "${DATABASE_ADMIN_COMMANDLINE} ping --silent || exit 1"]
193+
interval: 5s
194+
timeout: 5s
195+
retries: 50
180196
environment:
181197
MYSQL_ROOT_PASSWORD: '${MYSQL_ROOT_PASSWORD}'
182198
MYSQL_DATABASE: '${JOOMLA_DB_NAME}'
@@ -185,14 +201,14 @@ services:
185201
MYSQL_ALLOW_EMPTY_PASSWORD: 'No'
186202
MYSQL_ROOT_HOST: '${MYSQL_ROOT_HOST}'
187203
TZ: '${LOCAL_TIMEZONE}'
188-
labels:
204+
labels:
189205
- "docker-volume-backup.stop-during-backup=true"
190206
- "docker-volume-backup.archive-pre=/bin/sh -c 'mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --all-databases > /tmp/backup/db_backup_data.sql'"
191207
- "docker-volume-backup.exec-label=database"
192-
command: bash -c "apt-get -y update && apt-get install -y gettext-base && export PMA_CONTROLUSER=${PMA_CONTROLUSER} export PMA_CONTROLPASS=${PMA_CONTROLPASS} && envsubst '$$PMA_CONTROLUSER,$$PMA_CONTROLPASS' < /docker-entrypoint-initdb.d/create_tables.sql.template > /docker-entrypoint-initdb.d/create_tables.sql && docker-entrypoint.sh --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password"
193-
208+
command: bash -c "${DATABASE_PACKAGE_MANAGER} && export PMA_CONTROLUSER=${PMA_CONTROLUSER} export PMA_CONTROLPASS=${PMA_CONTROLPASS} && envsubst '$$PMA_CONTROLUSER,$$PMA_CONTROLPASS' < /docker-entrypoint-initdb.d/create_tables.sql.template > /docker-entrypoint-initdb.d/create_tables.sql && docker-entrypoint.sh --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=${DATABASE_AUTHENTICATION_PLUGIN}"
209+
194210
redis:
195-
image: 'redis:latest'
211+
image: redis:latest
196212
container_name: redis
197213
networks:
198214
- backend
@@ -211,9 +227,12 @@ services:
211227
ALLOW_EMPTY_PASSWORD: 'yes'
212228
TZ: '${LOCAL_TIMEZONE}'
213229
command: "redis-server ${REDIS_CONF_PREFIX}/redis/redis.conf"
214-
230+
215231
varnish:
216-
image: 'varnish:stable'
232+
depends_on:
233+
joomla:
234+
condition: service_healthy
235+
image: varnish:${VARNISH_VERSION}
217236
container_name: varnish
218237
networks:
219238
- backend
@@ -230,10 +249,10 @@ services:
230249
environment:
231250
VARNISH_SIZE: '${VARNISH_SIZE}'
232251
TZ: '${LOCAL_TIMEZONE}'
233-
command: "-a http=:8080,HTTP -p default_ttl=3600"
252+
command: "-a http=:8080,HTTP -p default_ttl=3600 -n /tmp/varnish_workdir"
234253

235254
mail:
236-
image: 'mailhog/mailhog'
255+
image: mailhog/mailhog:latest
237256
container_name: mail
238257
networks:
239258
- backend
@@ -267,7 +286,7 @@ services:
267286
BACKUP_FILENAME: 'backup-%Y-%m-%dT%H-%M-%S.tar.gz'
268287
BACKUP_RETENTION_DAYS: '7'
269288
EXEC_LABEL: 'database'
270-
#BACKUP_EXCLUDE_REGEXP: 'folder|folder|file|\\.log$$'
289+
#BACKUP_EXCLUDE_REGEXP: 'folder|folder|file|\\.log$$'
271290

272291
networks:
273292
backend: null
@@ -295,6 +314,6 @@ volumes:
295314
dtredis:
296315
name: redis-data
297316
certbot-etc:
298-
external: true
317+
external: true
299318
certbot-var:
300319
name: certbot-var

0 commit comments

Comments
 (0)