För att ladda dina sql-filer endast vid första körningen:
Du kan använda skrivfilen nedan
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 måste placera din data.sql
och schema.sql
filer under ./docker-entrypoint-initdb.d
katalog med Volumes
för mer information
.
SQL-filer i den här mappen kommer bara att laddas om DB:s datakatalog är tom (den allra första körningen av db-tjänsten) . (dvs.) i ditt fall ./mysql-data
mappen ska vara tom
För ditt andra problem:
Istället för att använda wait-for-it.sh
, kan du använda healthcheck
och service_healthy
. Här usermanagement-service
kommer att startas en gång mysqldb
kör framgångsrikt ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
i det angivna intervallet. För mer information om hälsokontroll och beroende_på, se här .
Fick test
kommando från här
.