Skip to content

Commit 157a7a0

Browse files
committed
Update docker-compose.yml
1 parent dfcfd0f commit 157a7a0

File tree

1 file changed

+44
-31
lines changed

1 file changed

+44
-31
lines changed

docker-compose.yml

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

55
drupal:
66
depends_on:
7-
- database
8-
image: 'drupal:${PHP_IMAGE_NAME}'
7+
database:
8+
condition: service_healthy
9+
image: drupal:${PHP_IMAGE_NAME}
910
container_name: drupal
1011
networks:
11-
- backend
12+
- backend
1213
volumes:
1314
- 'html:${WEBSERVER_DOC_ROOT}'
1415
- type: bind
@@ -24,26 +25,24 @@ services:
2425
links:
2526
- database
2627
- redis
27-
- varnish
2828
healthcheck:
29-
test: ["CMD-SHELL", "curl -fk https://${DOMAIN_NAME} || exit 1"]
30-
interval: 10s
29+
test: ["CMD-SHELL", "/bin/pidof php-fpm > /dev/null || exit 1"]
30+
interval: 5s
3131
timeout: 5s
32-
retries: 4
33-
start_period: 40s
32+
retries: 50
3433
environment:
3534
TZ: '${LOCAL_TIMEZONE}'
36-
labels:
35+
labels:
3736
- 'docker-volume-backup.stop-during-backup=true'
3837
command: >
39-
bash -c "if pecl install -p -- redis; then pecl install -o -f redis && rm -rf /tmp/pear && docker-php-ext-enable redis; fi; composer require 'drupal/redis:^1.6'; composer require drush/drush; composer require 'drupal/purge:^3.4' && composer require 'drupal/purge_purger_http:^1.0';
38+
bash -c "if pecl install -p -- redis; then pecl install -o -f redis && rm -rf /tmp/pear && docker-php-ext-enable redis; fi; composer require drush/drush; composer require drupal/purge drupal/purge_purger_http drupal/redis;
4039
if [ ! -f \"${WEBSERVER_DOC_ROOT}/sites/default/settings.php\" ]; then install -m 777 ${WEBSERVER_DOC_ROOT}/sites/default/default.settings.php ${WEBSERVER_DOC_ROOT}/sites/default/settings.php && sed -i 's/#/\\/\\/#/g' ${WEBSERVER_DOC_ROOT}/sites/default/settings.php &&
4140
echo -e \"\\n\\$$settings['trusted_host_patterns'] = [\\n\\t'^$$(echo \"${DOMAIN_NAME}\" | sed 's/\\./\\\\./g')$$',\\n\\t'^.+\\.$$(echo \"${DOMAIN_NAME}\" | sed 's/\\./\\\\./g')$$',\\n];\" >> ${WEBSERVER_DOC_ROOT}/sites/default/settings.php;
4241
mkdir -p -m 777 ${WEBSERVER_DOC_ROOT}/sites/default/files; fi; 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; docker-php-entrypoint 'php-fpm'"
4342
4443
webserver:
4544
depends_on:
46-
- drupal
45+
- varnish
4746
image: nginx:stable
4847
container_name: webserver
4948
networks:
@@ -78,36 +77,42 @@ services:
7877
NGINX_PORT: 80
7978
TZ: '${LOCAL_TIMEZONE}'
8079
command: bash -c "/docker-entrypoint.sh nginx -v; sh /tmp/ssl-conf.sh '${DOMAIN_NAME}' '${LETSENCRYPT_CONF_PREFIX}' '${NGINX_PREFIX}'"
81-
80+
8281
certbot:
8382
depends_on:
8483
- webserver
85-
image: certbot/certbot
84+
image: certbot/certbot:latest
8685
container_name: certbot
8786
networks:
8887
- backend
8988
volumes:
9089
- 'certbot-etc:${LETSENCRYPT_CONF_PREFIX}'
9190
- 'certbot-var:/var/lib/letsencrypt'
92-
- '/tmp/acme-challenge:/tmp/acme-challenge'
93-
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
9498
environment:
9599
TZ: '${LOCAL_TIMEZONE}'
96100
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};
97101
trap exit TERM; while :; do certbot renew --dry-run; sleep 12h & wait $${!}; done;"
98-
102+
99103
phpmyadmin:
100104
depends_on:
101-
- certbot
102-
image: phpmyadmin/phpmyadmin
105+
certbot:
106+
condition: service_healthy
107+
image: phpmyadmin:latest
103108
container_name: phpmyadmin
104109
networks:
105110
- backend
106111
- frontend
107112
volumes:
108113
- type: bind
109114
source: ./phpmyadmin/apache2/sites-available/default-ssl.conf
110-
target: '${APACHE_CONFDIR_PREFIX}/sites-available/default-ssl.conf'
115+
target: '${APACHE_CONFDIR_PREFIX}/sites-available/default-ssl.conf'
111116
- type: bind
112117
source: ./phpmyadmin/apache2/ports.conf
113118
target: '${APACHE_CONFDIR_PREFIX}/ports.conf'
@@ -139,12 +144,12 @@ services:
139144
command: >
140145
bash -c "echo ${PMA_HTPASSWD_USERNAME}:phpmyadmin:$$( printf \"%s:%s:%s\" \"${PMA_HTPASSWD_USERNAME}\" \"phpmyadmin\" \"${PMA_HTPASSWD_PASSWORD}\" | md5sum | awk '{print $$1}' ) > ${PMA_CONF_FOLDER}/.htpasswd
141146
&& printf 'AuthType Digest\\nAuthName \"phpmyadmin\"\\nAuthDigestProvider file\\nAuthUserFile ${PMA_CONF_FOLDER}/.htpasswd\\nRequire valid-user\\n' > ${WEBSERVER_DOC_ROOT}/.htaccess && a2enmod auth_digest;
142-
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;
147+
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;
143148
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;
144149
a2enmod ssl && a2ensite default-ssl && a2dissite 000-default && /docker-entrypoint.sh 'apache2-foreground'"
145-
150+
146151
database:
147-
image: '${DATABASE_IMAGE_NAME}:${DATABASE_VERSION}'
152+
image: ${DATABASE_IMAGE_NAME}:${DATABASE_VERSION}
148153
container_name: database
149154
networks:
150155
- backend
@@ -159,6 +164,11 @@ services:
159164
restart: unless-stopped
160165
ports:
161166
- '3306:3306'
167+
healthcheck:
168+
test: ["CMD-SHELL", "${DATABASE_ADMIN_COMMANDLINE} ping --silent || exit 1"]
169+
interval: 5s
170+
timeout: 5s
171+
retries: 50
162172
environment:
163173
MYSQL_ROOT_PASSWORD: '${MYSQL_ROOT_PASSWORD}'
164174
MYSQL_DATABASE: '${DB_NAME}'
@@ -167,14 +177,14 @@ services:
167177
MYSQL_ALLOW_EMPTY_PASSWORD: 'No'
168178
MYSQL_ROOT_HOST: '${MYSQL_ROOT_HOST}'
169179
TZ: '${LOCAL_TIMEZONE}'
170-
labels:
180+
labels:
171181
- "docker-volume-backup.stop-during-backup=true"
172182
- "docker-volume-backup.archive-pre=/bin/sh -c 'mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --all-databases > /tmp/backup/db_backup_data.sql'"
173183
- "docker-volume-backup.exec-label=database"
174-
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"
175-
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+
176186
redis:
177-
image: 'redis:latest'
187+
image: redis:latest
178188
container_name: redis
179189
networks:
180190
- backend
@@ -195,7 +205,10 @@ services:
195205
command: "redis-server ${REDIS_CONF_PREFIX}/redis/redis.conf"
196206

197207
varnish:
198-
image: 'varnish:stable'
208+
depends_on:
209+
drupal:
210+
condition: service_healthy
211+
image: varnish:${VARNISH_VERSION}
199212
container_name: varnish
200213
networks:
201214
- backend
@@ -212,8 +225,8 @@ services:
212225
environment:
213226
VARNISH_SIZE: '${VARNISH_SIZE}'
214227
TZ: '${LOCAL_TIMEZONE}'
215-
command: "-a http=:8080,HTTP -p default_ttl=3600"
216-
228+
command: "-a http=:8080,HTTP -p default_ttl=3600 -n /tmp/varnish_workdir"
229+
217230
backup:
218231
image: offen/docker-volume-backup:latest
219232
container_name: backup
@@ -234,7 +247,7 @@ services:
234247
BACKUP_FILENAME: 'backup-%Y-%m-%dT%H-%M-%S.tar.gz'
235248
BACKUP_RETENTION_DAYS: '7'
236249
EXEC_LABEL: 'database'
237-
BACKUP_EXCLUDE_REGEXP: 'core|modules|\\.log$$'
250+
BACKUP_EXCLUDE_REGEXP: 'core|modules|\\.log$$'
238251

239252
networks:
240253
backend: null
@@ -262,6 +275,6 @@ volumes:
262275
dtredis:
263276
name: redis-data
264277
certbot-etc:
265-
external: true
278+
external: true
266279
certbot-var:
267280
name: certbot-var

0 commit comments

Comments
 (0)