For kun at indlæse dine sql-filer ved første kørsel:
Du kan bruge nedenstående skrivefil
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
Du skal placere din data.sql
og schema.sql
filer under ./docker-entrypoint-initdb.d
bibliotek ved hjælp af Volumes
for mere info
.
SQL-filer i denne mappe vil kun blive indlæst, hvis DB's datamappe er tom (den allerførste kørsel af db-tjenesten) . (dvs.) i dit tilfælde ./mysql-data
mappen skal være tom
For dit andet problem:
I stedet for at bruge wait-for-it.sh
, kan du bruge healthcheck
og service_healthy
. Her usermanagement-service
vil blive startet én gang mysqldb
eksekverer ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
i det angivne interval. For flere detaljer om sundhedstjek og afhænger_on, se her .
Fik test
kommando fra her
.