आधिकारिक mysql docker image का नवीनतम संस्करण आपको स्टार्टअप पर डेटा आयात करने की अनुमति देता है। यहाँ मेरा docker-compose.yml है
data:
build: docker/data/.
mysql:
image: mysql
ports:
- "3307:3306"
environment:
MYSQL_ROOT_PASSWORD: 1234
volumes:
- ./docker/data:/docker-entrypoint-initdb.d
volumes_from:
- data
यहाँ, मेरे पास docker/data
. के अंतर्गत मेरा data-dump.sql है जो उस फ़ोल्डर के सापेक्ष है जिससे docker-compose चल रहा है। मैं उस sql फ़ाइल को इस निर्देशिका में बढ़ा रहा हूँ /docker-entrypoint-initdb.d
कंटेनर पर।
यदि आप यह देखना चाहते हैं कि यह कैसे काम करता है, तो उनके docker-entrypoint.sh
गिटहब में। उन्होंने डेटा आयात करने की अनुमति देने के लिए इस ब्लॉक को जोड़ा है
echo
for f in /docker-entrypoint-initdb.d/*; do
case "$f" in
*.sh) echo "$0: running $f"; . "$f" ;;
*.sql) echo "$0: running $f"; "${mysql[@]}" < "$f" && echo ;;
*) echo "$0: ignoring $f" ;;
esac
echo
done
एक अतिरिक्त नोट, यदि आप चाहते हैं कि डेटा mysql कंटेनर के बंद होने और हटाए जाने के बाद भी बना रहे, तो आपके पास एक अलग डेटा कंटेनर होना चाहिए जैसा कि आप docker-compose.yml में देखते हैं। डेटा कंटेनर Dockerfile की सामग्री बहुत सरल है।
FROM n3ziniuka5/ubuntu-oracle-jdk:14.04-JDK8
VOLUME /var/lib/mysql
CMD ["true"]
दृढ़ता के लिए डेटा कंटेनर का प्रारंभ स्थिति में होना भी आवश्यक नहीं है।