За зареждане на вашите sql файлове само при първото стартиране:
Можете да използвате файла за съставяне по-долу
version: '2.1'
services:
usermanagement-service:
build: ./UserManagementService
restart: on-failure
ports:
- "7778:7778"
depends_on:
mysqldb:
condition: service_healthy
mysqldb:
image: mysql
volumes:
- ./mysql-data:/var/lib/mysql
- ./mysql-init-files:/docker-entrypoint-initdb.d
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: userdb
MYSQL_USER: testuser
MYSQL_PASSWORD: testuser
ports:
- "3600:3306"
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
timeout: 20s
retries: 10
Трябва да поставите своя data.sql
и schema.sql
файлове под ./docker-entrypoint-initdb.d
директория с помощта на Volumes
за повече информация
.
SQL файловете в тази папка ще бъдат заредени само ако директорията с данни на DB е празна (първото стартиране на услугата db) . (т.е.) във вашия случай ./mysql-data
папката трябва да е празна
За втория ви проблем:
Вместо да използвате wait-for-it.sh
, можете да използвате healthcheck
и service_healthy
. Тук usermanagement-service
ще се стартира веднъж mysqldb
успешно изпълнява ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
в посочения интервал. За повече подробности относно проверката на състоянието иdependent_on вижте тук .
Имам test
команда от тук
.