Skip to content

Commit 7b8c2a0

Browse files
committed
Update docker-compose.yml
1 parent 5fb0fe7 commit 7b8c2a0

File tree

1 file changed

+39
-21
lines changed

1 file changed

+39
-21
lines changed

docker-compose.yml

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

55
rails:
66
depends_on:
7-
- database
7+
database:
8+
condition: service_healthy
89
build: ./docker/7.0
910
#image: 'damalis/rails:7.0'
1011
container_name: rails
@@ -19,20 +20,26 @@ services:
1920
links:
2021
- database
2122
- redis
23+
healthcheck:
24+
test: ["CMD-SHELL", "ps aux | grep rails > /dev/null || exit 1"]
25+
interval: 5s
26+
timeout: 5s
27+
retries: 50
2228
environment:
2329
DB_HOST: 'database'
2430
DB_USER: '${DB_USER}'
2531
DB_PASSWORD: '${DB_PASSWORD}'
2632
DB_NAME: '${DB_NAME}'
2733
TZ: '${LOCAL_TIMEZONE}'
28-
labels:
34+
labels:
2935
- 'docker-volume-backup.stop-during-backup=true'
3036
command: bash -c "if [ -f \"/app/Gemfile.lock\" ]; then bundle install; else rails new . && echo -en \"gem 'redis', '~> 5.0', '>= 5.0.5'\\ngem 'mysql2', '~> 0.5.4'\\n\" >> /app/Gemfile; fi && rails s -p 9000 -b '0.0.0.0'"
3137

3238
webserver:
3339
depends_on:
34-
- rails
35-
image: 'httpd:latest'
40+
rails:
41+
condition: service_healthy
42+
image: httpd:latest
3643
container_name: webserver
3744
networks:
3845
- backend
@@ -59,36 +66,42 @@ services:
5966
environment:
6067
TZ: '${LOCAL_TIMEZONE}'
6168
command: bash -c "sh /tmp/ssl-conf.sh '${DOMAIN_NAME}' '${LETSENCRYPT_CONF_PREFIX}' '${HTTPD_PREFIX}/conf'"
62-
69+
6370
certbot:
6471
depends_on:
6572
- webserver
66-
image: certbot/certbot
73+
image: certbot/certbot:latest
6774
container_name: certbot
6875
networks:
6976
- backend
7077
volumes:
7178
- 'certbot-etc:${LETSENCRYPT_CONF_PREFIX}'
7279
- 'certbot-var:/var/lib/letsencrypt'
73-
- '/tmp/acme-challenge:/tmp/acme-challenge'
74-
restart: unless-stopped
80+
- '/tmp/acme-challenge:/tmp/acme-challenge'
81+
restart: unless-stopped
82+
healthcheck:
83+
test: ["CMD-SHELL", "test -d ${LETSENCRYPT_CONF_PREFIX}/live/${DOMAIN_NAME} || exit 1"]
84+
interval: 5s
85+
timeout: 5s
86+
retries: 20
7587
environment:
7688
TZ: '${LOCAL_TIMEZONE}'
7789
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};
7890
trap exit TERM; while :; do certbot renew --dry-run; sleep 12h & wait $${!}; done;"
79-
91+
8092
phpmyadmin:
8193
depends_on:
82-
- certbot
83-
image: phpmyadmin/phpmyadmin
94+
certbot:
95+
condition: service_healthy
96+
image: phpmyadmin:latest
8497
container_name: phpmyadmin
8598
networks:
8699
- backend
87100
- frontend
88101
volumes:
89102
- type: bind
90103
source: ./phpmyadmin/apache2/sites-available/default-ssl.conf
91-
target: '${APACHE_CONFDIR_PREFIX}/sites-available/default-ssl.conf'
104+
target: '${APACHE_CONFDIR_PREFIX}/sites-available/default-ssl.conf'
92105
- type: bind
93106
source: ./phpmyadmin/apache2/ports.conf
94107
target: '${APACHE_CONFDIR_PREFIX}/ports.conf'
@@ -123,9 +136,9 @@ services:
123136
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;
124137
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;
125138
a2enmod ssl && a2ensite default-ssl && a2dissite 000-default && /docker-entrypoint.sh 'apache2-foreground'"
126-
139+
127140
database:
128-
image: '${DATABASE_IMAGE_NAME}:${DATABASE_VERSION}'
141+
image: ${DATABASE_IMAGE_NAME}:${DATABASE_VERSION}
129142
container_name: database
130143
networks:
131144
- backend
@@ -140,6 +153,11 @@ services:
140153
restart: unless-stopped
141154
ports:
142155
- '3306:3306'
156+
healthcheck:
157+
test: ["CMD-SHELL", "${DATABASE_ADMIN_COMMANDLINE} ping --silent || exit 1"]
158+
interval: 5s
159+
timeout: 5s
160+
retries: 50
143161
environment:
144162
MYSQL_ROOT_PASSWORD: '${MYSQL_ROOT_PASSWORD}'
145163
MYSQL_DATABASE: '${DB_NAME}'
@@ -148,14 +166,14 @@ services:
148166
MYSQL_ALLOW_EMPTY_PASSWORD: 'No'
149167
MYSQL_ROOT_HOST: '${MYSQL_ROOT_HOST}'
150168
TZ: '${LOCAL_TIMEZONE}'
151-
labels:
169+
labels:
152170
- "docker-volume-backup.stop-during-backup=true"
153171
- "docker-volume-backup.archive-pre=/bin/sh -c 'mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --all-databases > /tmp/backup/db_backup_data.sql'"
154172
- "docker-volume-backup.exec-label=database"
155-
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"
156-
173+
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}"
174+
157175
redis:
158-
image: 'redis:latest'
176+
image: redis:latest
159177
container_name: redis
160178
networks:
161179
- backend
@@ -174,7 +192,7 @@ services:
174192
ALLOW_EMPTY_PASSWORD: 'yes'
175193
TZ: '${LOCAL_TIMEZONE}'
176194
command: "redis-server ${REDIS_CONF_PREFIX}/redis/redis.conf"
177-
195+
178196
backup:
179197
image: offen/docker-volume-backup:latest
180198
container_name: backup
@@ -195,7 +213,7 @@ services:
195213
BACKUP_FILENAME: 'backup-%Y-%m-%dT%H-%M-%S.tar.gz'
196214
BACKUP_RETENTION_DAYS: '7'
197215
EXEC_LABEL: 'database'
198-
BACKUP_EXCLUDE_REGEXP: 'bin|test|tmp|log|\\.log$$'
216+
BACKUP_EXCLUDE_REGEXP: 'bin|test|tmp|log|\\.log$$'
199217

200218
networks:
201219
backend: null
@@ -223,6 +241,6 @@ volumes:
223241
dtredis:
224242
name: redis-data
225243
certbot-etc:
226-
external: true
244+
external: true
227245
certbot-var:
228246
name: certbot-var

0 commit comments

Comments
 (0)