Voor het laden van uw sql-bestanden alleen bij de eerste keer uitvoeren:
U kunt het onderstaande opstelbestand gebruiken
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
U moet uw data.sql
. plaatsen en schema.sql
bestanden onder ./docker-entrypoint-initdb.d
directory met behulp van Volumes
voor meer info
.
SQL-bestanden in deze map worden alleen geladen als de DB's datadirectory leeg is (de allereerste keer dat de db-service wordt uitgevoerd) . (d.w.z.) in jouw geval ./mysql-data
map moet leeg zijn
Voor je tweede probleem:
In plaats van wait-for-it.sh
. te gebruiken , kunt u healthcheck
. gebruiken en service_healthy
. Hier usermanagement-service
wordt eenmaal gestart mysqldb
voert succesvol ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
uit in het opgegeven interval. Voor meer details over healthcheck en depend_on, raadpleeg hier .
Heb test
commando van hier
.