71 lines
1.5 KiB
YAML
71 lines
1.5 KiB
YAML
services:
|
|
app:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
expose:
|
|
- "80"
|
|
environment:
|
|
DB_HOST: db
|
|
DB_PORT: 3306
|
|
DB_DATABASE: webgis_spbu
|
|
DB_USERNAME: webgis_user
|
|
DB_PASSWORD: webgis_password
|
|
depends_on:
|
|
migrate:
|
|
condition: service_completed_successfully
|
|
restart: unless-stopped
|
|
|
|
db:
|
|
image: mysql:8.4
|
|
environment:
|
|
MYSQL_DATABASE: webgis_spbu
|
|
MYSQL_USER: webgis_user
|
|
MYSQL_PASSWORD: webgis_password
|
|
MYSQL_ROOT_PASSWORD: root_password
|
|
expose:
|
|
- "3306"
|
|
volumes:
|
|
- webgis_db_data:/var/lib/mysql
|
|
- ./migrations:/docker-entrypoint-initdb.d:ro
|
|
restart: unless-stopped
|
|
|
|
migrate:
|
|
image: mysql:8.4
|
|
environment:
|
|
MYSQL_PWD: root_password
|
|
volumes:
|
|
- ./migrations:/migrations:ro
|
|
depends_on:
|
|
- db
|
|
command: >
|
|
sh -c "
|
|
until mysqladmin ping -h db -uroot --password=$$MYSQL_PWD --silent 2>/dev/null; do
|
|
echo 'Waiting for database...';
|
|
sleep 2;
|
|
done;
|
|
sleep 3;
|
|
echo 'mysqld is alive';
|
|
for file in /migrations/*.sql; do
|
|
[ -e \"$$file\" ] || { echo 'No SQL files found'; exit 0; };
|
|
echo \"Running $$file\";
|
|
mysql -h db -uroot --password=$$MYSQL_PWD < $$file || exit 1;
|
|
done;
|
|
echo 'All migrations done.';
|
|
"
|
|
restart: "no"
|
|
|
|
phpmyadmin:
|
|
image: phpmyadmin:5.2
|
|
expose:
|
|
- "80"
|
|
environment:
|
|
PMA_HOST: db
|
|
PMA_PORT: 3306
|
|
depends_on:
|
|
- db
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
webgis_db_data:
|