opencart/docker-compose.yml
Anton Semenov 481b88dfbf
feat(docker): add healthcheck for database service
This commit improves startup reliability by introducing a healthcheck for the MariaDB service.

It replaces the 'wait-for-it' script, ensuring that 'opencart' and 'adminer' only start after the database is confirmed to be healthy and ready for connections.

Signed-off-by: Anton Semenov <20430159+trydalcoholic@users.noreply.github.com>
2025-06-14 00:42:32 +03:00

56 lines
1.6 KiB
YAML

services:
opencart:
build: tools
user: 1000:1000
ports:
- "80:80"
volumes:
- ./upload:/var/www/html
depends_on:
mysql:
condition: service_healthy
command: >
bash -c "if [ ! -f /var/www/html/install.lock ]; then
cp config-dist.php config.php;
cp admin/config-dist.php admin/config.php;
php /var/www/html/install/cli_install.php install --username admin --password admin --email email@example.com --http_server http://localhost/ --db_driver mysqli --db_hostname mysql --db_username root --db_password opencart --db_database opencart --db_port 3306 --db_prefix oc_;
touch /var/www/html/install.lock;
fi &&
apache2-foreground"
mysql:
image: mariadb
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-opencart}
- MYSQL_DATABASE=${MYSQL_DATABASE:-opencart}
healthcheck:
test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD:-opencart}"]
interval: 10s
timeout: 5s
retries: 5
adminer:
image: adminer:latest
environment:
ADMINER_DEFAULT_SERVER: mysql
depends_on:
mysql:
condition: service_healthy
ports:
- "8080:8080"
redis:
image: redis:latest
memcached:
image: memcached:latest
postgres:
image: postgres:latest
environment:
- POSTGRES_USER=${POSTGRES_USER:-postgres}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-opencart}
- POSTGRES_DB=${POSTGRES_DB:-opencart}