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 -p$$MYSQL_PWD --silent; do echo 'Waiting for database...'; sleep 2; done; for file in /migrations/*.sql; do echo Running $$file; mysql -h db -uroot -p$$MYSQL_PWD < $$file; 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: