Skip to content

Commit 3834743

Browse files
committed
Update docker-compose.yml
1 parent 7d6161e commit 3834743

File tree

1 file changed

+40
-28
lines changed

1 file changed

+40
-28
lines changed

docker-compose.yml

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ services:
44

55
laravel:
66
depends_on:
7-
- database
8-
image: '${PHP_IMAGE_NAME}'
7+
database:
8+
condition: service_healthy
9+
image: ${PHP_IMAGE_NAME}
910
container_name: laravel
1011
networks:
1112
- backend
@@ -28,24 +29,24 @@ services:
2829
- database
2930
- redis
3031
healthcheck:
31-
test: ["CMD-SHELL", "curl -fk https://${DOMAIN_NAME} || exit 1"]
32-
interval: 10s
32+
test: ["CMD-SHELL", "/bin/pidof php-fpm > /dev/null || exit 1"]
33+
interval: 5s
3334
timeout: 5s
34-
retries: 8
35-
start_period: 60s
35+
retries: 50
3636
environment:
3737
TZ: '${LOCAL_TIMEZONE}'
38-
labels:
38+
labels:
3939
- 'docker-volume-backup.stop-during-backup=true'
4040
command: >
41-
bash -c "apt-get -y update && sh /tmp/packagecheck.sh 'zip unzip' && curl -sSL https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions -o - | sh -s intl pdo_mysql && if pecl install -p -- redis; then pecl install -o -f redis && rm -rf /tmp/pear && docker-php-ext-enable redis; fi; curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer &&
42-
if [ -f \"${WEBSERVER_DOC_ROOT}/webapp/.env\" ]; then composer update --working-dir=${WEBSERVER_DOC_ROOT}/webapp; else composer create-project laravel/laravel webapp && chmod -R 777 ${WEBSERVER_DOC_ROOT}/webapp/storage/framework ${WEBSERVER_DOC_ROOT}/webapp/storage/logs; fi;
43-
sed -i \"s/DB_HOST=127.0.0.1/DB_HOST=database/;s/REDIS_HOST=127.0.0.1/REDIS_HOST=redis/\" ${WEBSERVER_DOC_ROOT}/webapp/.env; 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; php-fpm"
41+
bash -c "apt-get update && sh /tmp/packagecheck.sh 'zip unzip' && curl -sSL https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions -o - | sh -s intl pdo_mysql && if pecl install -p -- redis; then pecl install -o -f redis && rm -rf /tmp/pear && docker-php-ext-enable redis; fi; curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer &&
42+
if [ -f \"${WEBSERVER_DOC_ROOT}/.env\" ]; then composer update --working-dir=${WEBSERVER_DOC_ROOT}; else rm -f ${WEBSERVER_DOC_ROOT}/README.md && composer create-project laravel/laravel . --working-dir=${WEBSERVER_DOC_ROOT} && chmod -R 777 ${WEBSERVER_DOC_ROOT}/storage/framework ${WEBSERVER_DOC_ROOT}/storage/logs; fi;
43+
sed -i \"s/DB_HOST=127.0.0.1/DB_HOST=database/;s/REDIS_HOST=127.0.0.1/REDIS_HOST=redis/\" ${WEBSERVER_DOC_ROOT}/.env; 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; php-fpm"
4444
4545
webserver:
4646
depends_on:
47-
- laravel
48-
image: 'httpd:latest'
47+
laravel:
48+
condition: service_healthy
49+
image: httpd:latest
4950
container_name: webserver
5051
networks:
5152
- backend
@@ -73,36 +74,42 @@ services:
7374
environment:
7475
TZ: '${LOCAL_TIMEZONE}'
7576
command: bash -c "sh /tmp/ssl-conf.sh '${DOMAIN_NAME}' '${LETSENCRYPT_CONF_PREFIX}' '${HTTPD_PREFIX}/conf'"
76-
77+
7778
certbot:
7879
depends_on:
7980
- webserver
80-
image: certbot/certbot
81+
image: certbot/certbot:latest
8182
container_name: certbot
8283
networks:
8384
- backend
8485
volumes:
8586
- 'certbot-etc:${LETSENCRYPT_CONF_PREFIX}'
8687
- 'certbot-var:/var/lib/letsencrypt'
87-
- '/tmp/acme-challenge:/tmp/acme-challenge'
88-
restart: unless-stopped
88+
- '/tmp/acme-challenge:/tmp/acme-challenge'
89+
restart: unless-stopped
90+
healthcheck:
91+
test: ["CMD-SHELL", "test -d ${LETSENCRYPT_CONF_PREFIX}/live/${DOMAIN_NAME} || exit 1"]
92+
interval: 5s
93+
timeout: 5s
94+
retries: 20
8995
environment:
9096
TZ: '${LOCAL_TIMEZONE}'
9197
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};
9298
trap exit TERM; while :; do certbot renew --dry-run; sleep 12h & wait $${!}; done;"
93-
99+
94100
phpmyadmin:
95101
depends_on:
96-
- certbot
97-
image: phpmyadmin/phpmyadmin
102+
certbot:
103+
condition: service_healthy
104+
image: phpmyadmin:latest
98105
container_name: phpmyadmin
99106
networks:
100107
- backend
101108
- frontend
102109
volumes:
103110
- type: bind
104111
source: ./phpmyadmin/apache2/sites-available/default-ssl.conf
105-
target: '${APACHE_CONFDIR_PREFIX}/sites-available/default-ssl.conf'
112+
target: '${APACHE_CONFDIR_PREFIX}/sites-available/default-ssl.conf'
106113
- type: bind
107114
source: ./phpmyadmin/apache2/ports.conf
108115
target: '${APACHE_CONFDIR_PREFIX}/ports.conf'
@@ -137,9 +144,9 @@ services:
137144
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;
138145
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;
139146
a2enmod ssl && a2ensite default-ssl && a2dissite 000-default && /docker-entrypoint.sh 'apache2-foreground'"
140-
147+
141148
database:
142-
image: '${DATABASE_IMAGE_NAME}:${DATABASE_VERSION}'
149+
image: ${DATABASE_IMAGE_NAME}:${DATABASE_VERSION}
143150
container_name: database
144151
networks:
145152
- backend
@@ -154,6 +161,11 @@ services:
154161
restart: unless-stopped
155162
ports:
156163
- '3306:3306'
164+
healthcheck:
165+
test: ["CMD-SHELL", "${DATABASE_ADMIN_COMMANDLINE} ping --silent || exit 1"]
166+
interval: 5s
167+
timeout: 5s
168+
retries: 50
157169
environment:
158170
MYSQL_ROOT_PASSWORD: '${MYSQL_ROOT_PASSWORD}'
159171
MYSQL_DATABASE: '${DB_NAME}'
@@ -162,14 +174,14 @@ services:
162174
MYSQL_ALLOW_EMPTY_PASSWORD: 'No'
163175
MYSQL_ROOT_HOST: '${MYSQL_ROOT_HOST}'
164176
TZ: '${LOCAL_TIMEZONE}'
165-
labels:
177+
labels:
166178
- "docker-volume-backup.stop-during-backup=true"
167179
- "docker-volume-backup.archive-pre=/bin/sh -c 'mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --all-databases > /tmp/backup/db_backup_data.sql'"
168180
- "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-
181+
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}"
182+
171183
redis:
172-
image: 'redis:latest'
184+
image: redis:latest
173185
container_name: redis
174186
networks:
175187
- backend
@@ -209,7 +221,7 @@ services:
209221
BACKUP_FILENAME: 'backup-%Y-%m-%dT%H-%M-%S.tar.gz'
210222
BACKUP_RETENTION_DAYS: '7'
211223
EXEC_LABEL: 'database'
212-
#BACKUP_EXCLUDE_REGEXP: 'folder|folder|file|\\.log$$'
224+
#BACKUP_EXCLUDE_REGEXP: 'folder|folder|file|\\.log$$'
213225

214226
networks:
215227
backend: null
@@ -237,6 +249,6 @@ volumes:
237249
dtredis:
238250
name: redis-data
239251
certbot-etc:
240-
external: true
252+
external: true
241253
certbot-var:
242254
name: certbot-var

0 commit comments

Comments
 (0)