Pro načítání souborů SQL pouze při prvním spuštění:
Můžete použít níže uvedený soubor pro psaní
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
Musíte umístit svůj data.sql
a schema.sql
soubory pod ./docker-entrypoint-initdb.d
adresář pomocí Volumes
další informace
.
Soubory SQL v této složce budou načteny pouze v případě, že datový adresář DB je prázdný (úplně první spuštění služby db) . (tj.) ve vašem případě ./mysql-data
složka by měla být prázdná
K vašemu druhému problému:
Místo použití wait-for-it.sh
, můžete použít healthcheck
a service_healthy
. Zde usermanagement-service
bude spuštěn jednou mysqldb
úspěšně provede ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
ve stanoveném intervalu. Další podrobnosti o Healthcheck a Depend_on naleznete zde .
Mám test
příkaz z zde
.