Do ładowania plików sql tylko przy pierwszym uruchomieniu:
Możesz użyć poniższego pliku do tworzenia
Wersjaversion: '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
Musisz umieścić swój data.sql
i schema.sql
pliki w ./docker-entrypoint-initdb.d
katalog przy użyciu Volumes
więcej informacji
.
Pliki SQL w tym folderze zostaną załadowane tylko wtedy, gdy katalog danych DB jest pusty (pierwsze uruchomienie usługi db) . (tj.) w twoim przypadku ./mysql-data
folder powinien być pusty
W przypadku drugiego problemu:
Zamiast używać wait-for-it.sh
, możesz użyć healthcheck
i service_healthy
. Tutaj usermanagement-service
zostanie uruchomiony raz mysqldb
pomyślnie wykonuje ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
w określonym przedziale. Aby uzyskać więcej informacji na temat kontroli stanu zdrowia i depend_on, zapoznaj się tutaj .
Mam test
polecenie z tutaj
.