मैं आधिकारिक MySQL डॉकटर कंटेनर छवि के आधार पर एक नई MySQL छवि बनाना चाहता हूं। मैं छवि चलाते समय जोड़ने के लिए आवश्यक पैरामीटर की संख्या को कम करना चाहता हूं। (जैसे. -e MYSQL_USER, -e MYSQL_DATABASE और यहां तक ​​कि -e MYSQL_ROOT_PASSWORD='rootsecret') जिसमें पहले से ही वैश्विक चरों के लिए मेरी सेटिंग्स और docker-entrypoint-initdb.d फ़ोल्डर में मेरी डेटाबेस SQL ​​​​फ़ाइल बनाएँ।

मैं अपनी सभी सेटिंग्स को कैसे जोड़ूं और केवल docker run mysql:config1 docker run mysql:config2 इत्यादि में एक नई छवि कैसे बनाऊं?

0
Theo 11 अक्टूबर 2017, 16:49

3 जवाब

सबसे बढ़िया उत्तर

निम्नलिखित को Dockerfile में लिखा जाना है:

FROM mysql:latest
LABEL Name=mylabel Version=0.0.1
COPY path/to/sh/sql/sql.gz/files /docker-entrypoint-initdb.d
ENV MYSQL_ROOT_PASSWORD='rootpassword' 

जैसा कि आधिकारिक डॉकटर वेबसाइट पर प्रलेखन में कहा गया है:

जब कोई कंटेनर पहली बार शुरू किया जाता है, तो निर्दिष्ट नाम के साथ एक नया डेटाबेस बनाया जाएगा और प्रदान किए गए कॉन्फ़िगरेशन चर के साथ आरंभ किया जाएगा। इसके अलावा, यह एक्सटेंशन .sh, .sql और .sql.gz के साथ फाइलों को निष्पादित करेगा जो /docker-entrypoint-initdb.d में पाए जाते हैं। फ़ाइलें वर्णानुक्रम में निष्पादित की जाएंगी।

0
Theo 13 अक्टूबर 2017, 11:35

आप डॉकर फ़ाइल का उपयोग करके अपनी खुद की MySQL डॉकर छवि बना सकते हैं, उपयोगकर्ता नाम, पासवर्ड और अन्य सभी चीज़ों को कॉन्फ़िगर कर सकते हैं, उस छवि को बनाएं, इसे डॉकर हब पर अपलोड करें और फिर जब आप एक नया डॉकर कंटेनर लॉन्च करते हैं तो आप पहले से निर्मित कंटेनर का उपयोग करते हैं .

एक mysql सर्वर के साथ एक ubuntu छवि बनाने के लिए एक डॉकर फ़ाइल का एक उदाहरण कुछ इस तरह होगा (इसे Dockerfile नामक फ़ाइल में सहेजें):

FROM ubuntu:latest
    RUN apt-get update \
    && apt-get install -y apt-utils \                                           
    && { \
        echo debconf debconf/frontend select Noninteractive; \
        echo mysql-community-server mysql-community-server/data-dir \
            select ''; \
        echo mysql-community-server mysql-community-server/root-pass \
            password 'Desired-Password'; \
        echo mysql-community-server mysql-community-server/re-root-pass \
            password 'Desired-Password'; \
        echo mysql-community-server mysql-community-server/remove-test-db \
            select true; \
    } | debconf-set-selections \
    && apt-get install -y mysql-server mysql-client

फिर इस तरह अपना mysql डॉकटर कंटेनर बनाएं (आपको उस फ़ोल्डर में रहना होगा जहां डॉकर फ़ाइल सहेजी गई थी):

docker build my-ubuntu-mysql-docker

फिर आपको इसे डॉकटर हब में धकेलना होगा और फिर आप इसका उपयोग इस तरह से एक नया डॉकटर कंटेनर शुरू करने के लिए कर सकते हैं:

docker run -d -p 2222:22 -p 3306:3306 --name my-ubuntu-mysql-docker ...

जहां 2222 स्थानीय एसएसएच पोर्ट है जो डॉकटर कंटेनर के एसएसएच पोर्ट 22 में मैप किया गया है और 3306 स्थानीय माइस्क्ल पोर्ट है जिसे डॉकटर कंटेनर के माइस्क्ल पोर्ट में मैप किया गया है।

आशा है यह मदद करेगा!

1
Bogdan Stoica 11 अक्टूबर 2017, 17:23

आप जो करना चाहते हैं वह है मैसकल की छवि को संशोधित करना प्रवेश बिंदु और कृपया ध्यान दें कि आपको सभी मापदंडों को पारित करने की आवश्यकता नहीं है, उनमें से अधिकांश वैकल्पिक हैं

0
Sergiu 11 अक्टूबर 2017, 17:14