最初の実行時にのみSQLファイルをロードする場合:
以下の作成ファイルを使用できます
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
data.sql
を配置する必要があります およびschema.sql
./docker-entrypoint-initdb.d
の下のファイル Volumes
を使用するディレクトリ 詳細a> 。
このフォルダ内のSQLファイルは、 DBのデータディレクトリが空の場合(dbサービスの最初の実行)の場合にのみロードされます。 。 (つまり)あなたの場合は./mysql-data
フォルダは空である必要があります
2番目の問題の場合:
wait-for-it.sh
を使用する代わりに 、healthcheck
を使用できます およびservice_healthy
。ここでusermanagement-service
mysqldb
が一度開始されます ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
を正常に実行します 指定された間隔で。 healthcheckとdepends_onの詳細については、こちらを参照してください。 a> 。
test
を取得しました こちら
からのコマンド 。