Skip to content

Commit c1d5329

Browse files
committed
Update docker-compose.yml
1 parent c86c26f commit c1d5329

File tree

1 file changed

+47
-29
lines changed

1 file changed

+47
-29
lines changed

docker-compose.yml

Lines changed: 47 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
@@ -24,20 +25,24 @@ services:
2425
links:
2526
- database
2627
- redis
27-
- varnish
28+
healthcheck:
29+
test: ["CMD-SHELL", "/bin/pidof php-fpm > /dev/null || exit 1"]
30+
interval: 5s
31+
timeout: 5s
32+
retries: 20
2833
environment:
2934
JOOMLA_DB_HOST: 'database'
3035
JOOMLA_DB_USER: '${JOOMLA_DB_USER}'
3136
JOOMLA_DB_PASSWORD: '${JOOMLA_DB_PASSWORD}'
3237
JOOMLA_DB_NAME: '${JOOMLA_DB_NAME}'
3338
TZ: '${LOCAL_TIMEZONE}'
34-
labels:
39+
labels:
3540
- 'docker-volume-backup.stop-during-backup=true'
3641
entrypoint: bash -c "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; /entrypoint.sh 'php-fpm'"
3742

3843
webserver:
3944
depends_on:
40-
- joomla
45+
- varnish
4146
image: nginx:stable
4247
container_name: webserver
4348
networks:
@@ -72,36 +77,42 @@ services:
7277
NGINX_PORT: 80
7378
TZ: '${LOCAL_TIMEZONE}'
7479
command: bash -c "/docker-entrypoint.sh nginx -v; sh /tmp/ssl-conf.sh '${DOMAIN_NAME}' '${LETSENCRYPT_CONF_PREFIX}' '${NGINX_PREFIX}'"
75-
80+
7681
certbot:
7782
depends_on:
7883
- webserver
79-
image: certbot/certbot
84+
image: certbot/certbot:latest
8085
container_name: certbot
8186
networks:
8287
- backend
8388
volumes:
8489
- 'certbot-etc:${LETSENCRYPT_CONF_PREFIX}'
8590
- 'certbot-var:/var/lib/letsencrypt'
86-
- '/tmp/acme-challenge:/tmp/acme-challenge'
87-
restart: unless-stopped
91+
- '/tmp/acme-challenge:/tmp/acme-challenge'
92+
restart: unless-stopped
93+
healthcheck:
94+
test: ["CMD-SHELL", "test -d ${LETSENCRYPT_CONF_PREFIX}/live/${DOMAIN_NAME} || exit 1"]
95+
interval: 5s
96+
timeout: 5s
97+
retries: 20
8898
environment:
8999
TZ: '${LOCAL_TIMEZONE}'
90100
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};
91101
trap exit TERM; while :; do certbot renew --dry-run; sleep 12h & wait $${!}; done;"
92-
102+
93103
phpmyadmin:
94104
depends_on:
95-
- certbot
96-
image: phpmyadmin/phpmyadmin
105+
certbot:
106+
condition: service_healthy
107+
image: phpmyadmin:latest
97108
container_name: phpmyadmin
98109
networks:
99110
- backend
100111
- frontend
101112
volumes:
102113
- type: bind
103114
source: ./phpmyadmin/apache2/sites-available/default-ssl.conf
104-
target: '${APACHE_CONFDIR_PREFIX}/sites-available/default-ssl.conf'
115+
target: '${APACHE_CONFDIR_PREFIX}/sites-available/default-ssl.conf'
105116
- type: bind
106117
source: ./phpmyadmin/apache2/ports.conf
107118
target: '${APACHE_CONFDIR_PREFIX}/ports.conf'
@@ -110,13 +121,12 @@ services:
110121
target: '${LETSENCRYPT_CONF_PREFIX}/options-ssl-apache.conf'
111122
- type: bind
112123
source: ./phpmyadmin/config.user.inc.php
113-
target: '${PMA_CONF_FOLDER}/config.user.inc.php'
124+
target: '${PMA_CONF_FOLDER}/config.user.inc.php'
114125
- type: bind
115126
source: ./phpmyadmin/php/conf.d/security.ini
116127
target: '${PHP_INI_DIR_PREFIX}/php/conf.d/security.ini'
117128
- 'certbot-etc:${LETSENCRYPT_CONF_PREFIX}'
118129
hostname: phpmyadmin
119-
ipc: private
120130
restart: unless-stopped
121131
ports:
122132
- '9090:443'
@@ -137,9 +147,9 @@ services:
137147
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;
138148
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;
139149
a2enmod ssl && a2ensite default-ssl && a2dissite 000-default && /docker-entrypoint.sh 'apache2-foreground'"
140-
150+
141151
database:
142-
image: '${DATABASE_IMAGE_NAME}:${DATABASE_VERSION}'
152+
image: ${DATABASE_IMAGE_NAME}:${DATABASE_VERSION}
143153
container_name: database
144154
networks:
145155
- backend
@@ -154,6 +164,11 @@ services:
154164
restart: unless-stopped
155165
ports:
156166
- '3306:3306'
167+
healthcheck:
168+
test: ["CMD-SHELL", "${DATABASE_ADMIN_COMMANDLINE} ping --silent || exit 1"]
169+
interval: 5s
170+
timeout: 5s
171+
retries: 50
157172
environment:
158173
MYSQL_ROOT_PASSWORD: '${MYSQL_ROOT_PASSWORD}'
159174
MYSQL_DATABASE: '${JOOMLA_DB_NAME}'
@@ -162,14 +177,14 @@ services:
162177
MYSQL_ALLOW_EMPTY_PASSWORD: 'No'
163178
MYSQL_ROOT_HOST: '${MYSQL_ROOT_HOST}'
164179
TZ: '${LOCAL_TIMEZONE}'
165-
labels:
180+
labels:
166181
- "docker-volume-backup.stop-during-backup=true"
167182
- "docker-volume-backup.archive-pre=/bin/sh -c 'mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --all-databases > /tmp/backup/db_backup_data.sql'"
168183
- "docker-volume-backup.exec-label=database"
169-
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"
170-
184+
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}"
185+
171186
redis:
172-
image: 'redis:latest'
187+
image: redis:latest
173188
container_name: redis
174189
networks:
175190
- backend
@@ -190,7 +205,10 @@ services:
190205
command: "redis-server ${REDIS_CONF_PREFIX}/redis/redis.conf"
191206

192207
varnish:
193-
image: 'varnish:stable'
208+
depends_on:
209+
wordpress:
210+
condition: service_healthy
211+
image: varnish:${VARNISH_VERSION}
194212
container_name: varnish
195213
networks:
196214
- backend
@@ -209,10 +227,10 @@ services:
209227
TZ: '${LOCAL_TIMEZONE}'
210228
labels:
211229
- "docker-volume-backup.stop-during-backup=true"
212-
command: "-a http=:8080,HTTP -p default_ttl=3600"
213-
230+
command: "-a http=:8080,HTTP -p default_ttl=3600 -n /tmp/varnish_workdir"
231+
214232
mail:
215-
image: 'mailhog/mailhog'
233+
image: mailhog/mailhog
216234
container_name: mail
217235
networks:
218236
- backend
@@ -225,7 +243,7 @@ services:
225243
MH_HOSTNAME: 'mail.${DOMAIN_NAME}'
226244
MH_AUTH_FILE: '${DOMAIN_NAME}-auth'
227245
entrypoint: sh -c "echo ${PMA_HTPASSWD_USERNAME}:$(MailHog bcrypt ${PMA_HTPASSWD_PASSWORD}) > ${DOMAIN_NAME}-auth && MailHog"
228-
246+
229247
backup:
230248
image: offen/docker-volume-backup:latest
231249
container_name: backup
@@ -246,7 +264,7 @@ services:
246264
BACKUP_FILENAME: 'backup-%Y-%m-%dT%H-%M-%S.tar.gz'
247265
BACKUP_RETENTION_DAYS: '7'
248266
EXEC_LABEL: 'database'
249-
#BACKUP_EXCLUDE_REGEXP: 'folder|folder|file|\\.log$$'
267+
#BACKUP_EXCLUDE_REGEXP: 'folder|folder|file|\\.log$$'
250268

251269
networks:
252270
backend: null
@@ -274,6 +292,6 @@ volumes:
274292
dtredis:
275293
name: redis-data
276294
certbot-etc:
277-
external: true
295+
external: true
278296
certbot-var:
279297
name: certbot-var

0 commit comments

Comments
 (0)