अपनी 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
place डालना होगा और schema.sql
./docker-entrypoint-initdb.d
. के अंतर्गत फ़ाइलें Volumes
. का उपयोग कर निर्देशिका अधिक जानकारी के लिए
.
इस फ़ोल्डर में SQL फ़ाइलें केवल तभी लोड होंगी जब DB की डेटा निर्देशिका खाली हो (db सेवा का पहला रन) . (यानी) आपके मामले में ./mysql-data
फ़ोल्डर खाली होना चाहिए
आपकी दूसरी समस्या के लिए:
wait-for-it.sh
का उपयोग करने के बजाय , आप healthcheck
. का उपयोग कर सकते हैं और service_healthy
. यहां usermanagement-service
एक बार शुरू हो जाएगा mysqldb
["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
को सफलतापूर्वक निष्पादित करता है निर्दिष्ट अंतराल में। हेल्थचेक और डिपेंड्स_ऑन के बारे में अधिक जानकारी के लिए, यहां
ए> .
test
मिल गया यहां
से कमांड करें ।