Untuk memuat file sql Anda hanya saat pertama kali dijalankan:
Anda dapat menggunakan file penulisan di bawah ini
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
Anda harus menempatkan data.sql
dan schema.sql
file di bawah ./docker-entrypoint-initdb.d
direktori menggunakan Volumes
untuk info lebih lanjut
.
File SQL dalam folder ini hanya akan dimuat jika direktori data DB kosong (layanan db pertama kali dijalankan) . (yaitu) dalam kasus Anda ./mysql-data
folder harus kosong
Untuk masalah kedua Anda:
Alih-alih menggunakan wait-for-it.sh
, Anda dapat menggunakan healthcheck
dan service_healthy
. Di sini usermanagement-service
akan dimulai setelah mysqldb
berhasil mengeksekusi ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
dalam interval yang ditentukan. Untuk detail selengkapnya tentang healthcheck dan depend_on, lihat di sini .
Mendapat test
perintah dari di sini
.