Skip to content

Commit 98e59aa

Browse files
committed
Update docker-compose.yml
1 parent 5cc8a59 commit 98e59aa

File tree

1 file changed

+70
-33
lines changed

1 file changed

+70
-33
lines changed

docker-compose.yml

Lines changed: 70 additions & 33 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
@@ -25,55 +26,60 @@ services:
2526
- database
2627
- redis
2728
healthcheck:
28-
test: ["CMD-SHELL", "curl -fk https://${DOMAIN_NAME} || exit 1"]
29-
interval: 10s
29+
test: ["CMD-SHELL", "/bin/pidof php-fpm > /dev/null || exit 1"]
30+
interval: 5s
3031
timeout: 5s
31-
retries: 4
32-
start_period: 40s
32+
retries: 50
3333
environment:
3434
TZ: '${LOCAL_TIMEZONE}'
35-
labels:
35+
labels:
3636
- 'docker-volume-backup.stop-during-backup=true'
3737
command: >
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 '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;
3939
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 &&
4040
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;
4141
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'"
4242
4343
webserver:
4444
depends_on:
45-
- drupal
46-
image: 'httpd:latest'
45+
- varnish
46+
image: httpd:latest
4747
container_name: webserver
4848
networks:
49-
- backend
49+
- backend
5050
volumes:
5151
- 'html:${WEBSERVER_DOC_ROOT}'
5252
- type: bind
5353
source: ./webserver
54-
target: '${HTTPD_PREFIX}/conf'
55-
hostname: webserver
54+
target: '${HTTPD_PREFIX}/conf'
55+
hostname: webserver
5656
restart: unless-stopped
5757
ports:
58-
- '8080:80'
58+
- '80:80'
59+
- '90:90'
5960
links:
6061
- drupal
6162
environment:
6263
TZ: '${LOCAL_TIMEZONE}'
6364
command: bash -c "sed -i 's/example.com/${DOMAIN_NAME}/g' ${HTTPD_PREFIX}/conf/extra/httpd-vhosts.conf && httpd -t; httpd-foreground"
64-
65+
6566
certbot:
6667
depends_on:
6768
- proxy
68-
image: certbot/certbot
69+
image: certbot/certbot:latest
6970
container_name: certbot
7071
networks:
7172
- backend
7273
volumes:
7374
- 'certbot-etc:${LETSENCRYPT_CONF_PREFIX}'
7475
- 'certbot-var:/var/lib/letsencrypt'
75-
- '/tmp/acme-challenge:/tmp/acme-challenge'
76-
restart: unless-stopped
76+
- '/tmp/acme-challenge:/tmp/acme-challenge'
77+
restart: unless-stopped
78+
healthcheck:
79+
test: ["CMD-SHELL", "test -d ${LETSENCRYPT_CONF_PREFIX}/live/${DOMAIN_NAME} || exit 1"]
80+
interval: 5s
81+
timeout: 5s
82+
retries: 20
7783
environment:
7884
TZ: '${LOCAL_TIMEZONE}'
7985
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};
@@ -106,25 +112,28 @@ services:
106112
restart: unless-stopped
107113
ports:
108114
- '80:80'
109-
- '443:443'
115+
- '443:443'
116+
links:
117+
- webserver
110118
environment:
111119
NGINX_HOST: ${DOMAIN_NAME}
112120
NGINX_PORT: 80
113121
TZ: '${LOCAL_TIMEZONE}'
114122
command: bash -c "/docker-entrypoint.sh nginx -v; sh /tmp/ssl-proxyconf.sh '${DOMAIN_NAME}' '${LETSENCRYPT_CONF_PREFIX}' '${PROXY_PREFIX}'"
115-
123+
116124
phpmyadmin:
117125
depends_on:
118-
- certbot
119-
image: phpmyadmin/phpmyadmin
126+
certbot:
127+
condition: service_healthy
128+
image: phpmyadmin:latest
120129
container_name: phpmyadmin
121130
networks:
122131
- backend
123132
- frontend
124133
volumes:
125134
- type: bind
126135
source: ./phpmyadmin/apache2/sites-available/default-ssl.conf
127-
target: '${APACHE_CONFDIR_PREFIX}/sites-available/default-ssl.conf'
136+
target: '${APACHE_CONFDIR_PREFIX}/sites-available/default-ssl.conf'
128137
- type: bind
129138
source: ./phpmyadmin/apache2/ports.conf
130139
target: '${APACHE_CONFDIR_PREFIX}/ports.conf'
@@ -159,9 +168,9 @@ services:
159168
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;
160169
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;
161170
a2enmod ssl && a2ensite default-ssl && a2dissite 000-default && /docker-entrypoint.sh 'apache2-foreground'"
162-
171+
163172
database:
164-
image: '${DATABASE_IMAGE_NAME}:${DATABASE_VERSION}'
173+
image: ${DATABASE_IMAGE_NAME}:${DATABASE_VERSION}
165174
container_name: database
166175
networks:
167176
- backend
@@ -171,11 +180,16 @@ services:
171180
- type: bind
172181
source: ./database/conf.d/z-mysql.cnf
173182
target: '${MYSQL_CONF_PREFIX}/z-mysql.cnf'
174-
- 'phpmyadmin-sql:/docker-entrypoint-initdb.d'
183+
- 'phpmyadmin-sql:/docker-entrypoint-initdb.d'
175184
hostname: database
176185
restart: unless-stopped
177186
ports:
178187
- '3306:3306'
188+
healthcheck:
189+
test: ["CMD-SHELL", "${DATABASE_ADMIN_COMMANDLINE} ping --silent || exit 1"]
190+
interval: 5s
191+
timeout: 5s
192+
retries: 50
179193
environment:
180194
MYSQL_ROOT_PASSWORD: '${MYSQL_ROOT_PASSWORD}'
181195
MYSQL_DATABASE: '${DB_NAME}'
@@ -184,14 +198,14 @@ services:
184198
MYSQL_ALLOW_EMPTY_PASSWORD: 'No'
185199
MYSQL_ROOT_HOST: '${MYSQL_ROOT_HOST}'
186200
TZ: '${LOCAL_TIMEZONE}'
187-
labels:
201+
labels:
188202
- "docker-volume-backup.stop-during-backup=true"
189203
- "docker-volume-backup.archive-pre=/bin/sh -c 'mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --all-databases > /tmp/backup/db_backup_data.sql'"
190204
- "docker-volume-backup.exec-label=database"
191-
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"
192-
205+
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}"
206+
193207
redis:
194-
image: 'redis:latest'
208+
image: redis:latest
195209
container_name: redis
196210
networks:
197211
- backend
@@ -210,7 +224,30 @@ services:
210224
ALLOW_EMPTY_PASSWORD: 'yes'
211225
TZ: '${LOCAL_TIMEZONE}'
212226
command: "redis-server ${REDIS_CONF_PREFIX}/redis/redis.conf"
213-
227+
228+
varnish:
229+
depends_on:
230+
drupal:
231+
condition: service_healthy
232+
image: varnish:${VARNISH_VERSION}
233+
container_name: varnish
234+
networks:
235+
- backend
236+
volumes:
237+
- type: bind
238+
source: ./varnish/default.vcl
239+
target: '${VARNISH_CONF_PREFIX}/default.vcl'
240+
hostname: varnish
241+
tmpfs:
242+
- /var/lib/varnish:exec
243+
restart: unless-stopped
244+
ports:
245+
- '8080:80'
246+
environment:
247+
VARNISH_SIZE: '${VARNISH_SIZE}'
248+
TZ: '${LOCAL_TIMEZONE}'
249+
command: "-a http=:8080,HTTP -p default_ttl=3600 -n /tmp/varnish_workdir"
250+
214251
backup:
215252
image: offen/docker-volume-backup:latest
216253
container_name: backup
@@ -259,6 +296,6 @@ volumes:
259296
dtredis:
260297
name: redis-data
261298
certbot-etc:
262-
external: true
299+
external: true
263300
certbot-var:
264301
name: certbot-var

0 commit comments

Comments
 (0)