Skip to content

Commit 623acc7

Browse files
committed
Update docker-compose.yml
1 parent 825b7ff commit 623acc7

File tree

1 file changed

+39
-28
lines changed

1 file changed

+39
-28
lines changed

docker-compose.yml

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

55
symfony:
66
depends_on:
7-
- database
8-
image: '${PHP_IMAGE_NAME}'
7+
database:
8+
condition: service_healthy
9+
image: ${PHP_IMAGE_NAME}
910
container_name: symfony
1011
networks:
1112
- backend
@@ -28,33 +29,32 @@ 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: 6
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'
40-
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 && pecl install -o -f redis && rm -rf /tmp/pear && docker-php-ext-enable redis; 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 symfony/skeleton:"6.1.*" webapp && composer require --working-dir=${WEBSERVER_DOC_ROOT}/webapp ${SKELETON_WEBAPP} && cp ${WEBSERVER_DOC_ROOT}/htaccess ${WEBSERVER_DOC_ROOT}/webapp/public/.htaccess; fi;
43-
sed -i 's/DATABASE_URL=\"postgresql/# DATABASE_URL=\"postgresql/;s/# DATABASE_URL=\"mysql/DATABASE_URL=\"mysql/;s/app:/${DB_USER}:/;s/!ChangeMe!/${DB_PASSWORD}/;s/127.0.0.1/database/;s/app?/${DB_NAME}?/;s/serverVersion=.*\&charset/serverVersion=mariadb-10\&charset/' ${WEBSERVER_DOC_ROOT}/webapp/.env;
40+
command: >
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 symfony/skeleton . --working-dir=${WEBSERVER_DOC_ROOT} && composer require --working-dir=${WEBSERVER_DOC_ROOT} ${SKELETON_WEBAPP}; fi;
4443
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"
4544
4645
webserver:
4746
depends_on:
48-
- symfony
49-
image: 'httpd:latest'
47+
symfony:
48+
condition: service_healthy
49+
image: httpd:latest
5050
container_name: webserver
5151
networks:
5252
- backend
5353
volumes:
5454
- 'html:${WEBSERVER_DOC_ROOT}'
5555
- type: bind
5656
source: ./webserver
57-
target: '${HTTPD_PREFIX}/conf'
57+
target: '${HTTPD_PREFIX}/conf'
5858
hostname: webserver
5959
restart: unless-stopped
6060
ports:
@@ -64,19 +64,24 @@ services:
6464
environment:
6565
TZ: '${LOCAL_TIMEZONE}'
6666
command: bash -c "sed -i 's/example.com/${DOMAIN_NAME}/g' ${HTTPD_PREFIX}/conf/extra/httpd-vhosts.conf && httpd -t; httpd-foreground"
67-
67+
6868
certbot:
6969
depends_on:
7070
- proxy
71-
image: certbot/certbot
71+
image: certbot/certbot:latest
7272
container_name: certbot
7373
networks:
7474
- backend
7575
volumes:
7676
- 'certbot-etc:${LETSENCRYPT_CONF_PREFIX}'
7777
- 'certbot-var:/var/lib/letsencrypt'
78-
- '/tmp/acme-challenge:/tmp/acme-challenge'
78+
- '/tmp/acme-challenge:/tmp/acme-challenge'
7979
restart: unless-stopped
80+
healthcheck:
81+
test: ["CMD-SHELL", "test -d ${LETSENCRYPT_CONF_PREFIX}/live/${DOMAIN_NAME} || exit 1"]
82+
interval: 5s
83+
timeout: 5s
84+
retries: 20
8085
environment:
8186
TZ: '${LOCAL_TIMEZONE}'
8287
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};
@@ -120,16 +125,17 @@ services:
120125

121126
phpmyadmin:
122127
depends_on:
123-
- certbot
124-
image: phpmyadmin/phpmyadmin
128+
certbot:
129+
condition: service_healthy
130+
image: phpmyadmin:latest
125131
container_name: phpmyadmin
126132
networks:
127133
- backend
128134
- frontend
129135
volumes:
130136
- type: bind
131137
source: ./phpmyadmin/apache2/sites-available/default-ssl.conf
132-
target: '${APACHE_CONFDIR_PREFIX}/sites-available/default-ssl.conf'
138+
target: '${APACHE_CONFDIR_PREFIX}/sites-available/default-ssl.conf'
133139
- type: bind
134140
source: ./phpmyadmin/apache2/ports.conf
135141
target: '${APACHE_CONFDIR_PREFIX}/ports.conf'
@@ -164,9 +170,9 @@ services:
164170
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;
165171
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;
166172
a2enmod ssl && a2ensite default-ssl && a2dissite 000-default && /docker-entrypoint.sh 'apache2-foreground'"
167-
173+
168174
database:
169-
image: '${DATABASE_IMAGE_NAME}:${DATABASE_VERSION}'
175+
image: ${DATABASE_IMAGE_NAME}:${DATABASE_VERSION}
170176
container_name: database
171177
networks:
172178
- backend
@@ -181,6 +187,11 @@ services:
181187
restart: unless-stopped
182188
ports:
183189
- '3306:3306'
190+
healthcheck:
191+
test: ["CMD-SHELL", "${DATABASE_ADMIN_COMMANDLINE} ping --silent || exit 1"]
192+
interval: 5s
193+
timeout: 5s
194+
retries: 50
184195
environment:
185196
MYSQL_ROOT_PASSWORD: '${MYSQL_ROOT_PASSWORD}'
186197
MYSQL_DATABASE: '${DB_NAME}'
@@ -189,14 +200,14 @@ services:
189200
MYSQL_ALLOW_EMPTY_PASSWORD: 'No'
190201
MYSQL_ROOT_HOST: '${MYSQL_ROOT_HOST}'
191202
TZ: '${LOCAL_TIMEZONE}'
192-
labels:
203+
labels:
193204
- "docker-volume-backup.stop-during-backup=true"
194205
- "docker-volume-backup.archive-pre=/bin/sh -c 'mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --all-databases > /tmp/backup/db_backup_data.sql'"
195206
- "docker-volume-backup.exec-label=database"
196-
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"
197-
207+
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}"
208+
198209
redis:
199-
image: 'redis:latest'
210+
image: redis:latest
200211
container_name: redis
201212
networks:
202213
- backend
@@ -236,7 +247,7 @@ services:
236247
BACKUP_FILENAME: 'backup-%Y-%m-%dT%H-%M-%S.tar.gz'
237248
BACKUP_RETENTION_DAYS: '7'
238249
EXEC_LABEL: 'database'
239-
BACKUP_EXCLUDE_REGEXP: 'webapp/bin|webapp/migrations|webapp/src|webapp/tests|webapp/var|webapp/vendor|\\.log$$'
250+
#BACKUP_EXCLUDE_REGEXP: 'folder|folder|file|\\.log$$'
240251

241252
networks:
242253
backend: null
@@ -264,6 +275,6 @@ volumes:
264275
dtredis:
265276
name: redis-data
266277
certbot-etc:
267-
external: true
278+
external: true
268279
certbot-var:
269280
name: certbot-var

0 commit comments

Comments
 (0)