2016-07-13 10 views
6

मैं अगले dockerfile है:MySQL रूट पासवर्ड config पर जमे हुए

FROM ubuntu:16.04 
RUN apt-get update && apt-get upgrade -y && apt-get install -y apache2 mysql-server mysql-client 

के बाद, डोकर मुझे पासवर्ड जड़ पूछ निर्माण: यह

While not mandatory, it is highly recommended that you set a password for the 
MySQL administrative "root" user. 

If this field is left blank, the password will not be changed. 

New password for the MySQL "root" user: 

मैं पासवर्ड दर्ज करें, लेकिन, बस उस राज्य में रहता है।

मैं mysql इस तरह से स्थापित कर सकते हैं ?, मैं इसे स्थापित करने के लिए नहीं करना चाहते हैं स्वचालित रूप से

उत्तर

1

डॉकर तरीका "एक प्रक्रिया के लिए एक कंटेनर" है। आपको अपाचे के लिए एक कंटेनर और एक mysql के लिए एक की आवश्यकता है। आप official php image और official mysql image

उपयोग कर सकते हैं कंटेनरों को जोड़ने के लिए मैं सलाह देते हैं उपयोग डोकर-रचना

+0

मैं पर्यवेक्षक उपयोग करने के लिए ... कौन सा विकल्प बेहतर है की योजना बनाई? डॉकर-रचना या पर्यवेक्षक? – alvarezsh

+1

हम बाद में पर्यवेक्षक का इस्तेमाल करते थे, लेकिन अब हम अलग कंटेनरों का उपयोग करते हैं। यह कुछ फायदे देता है। हम आधिकारिक छवियों और अपडेट का उपयोग कर सकते हैं, क्लस्टर के केवल एक हिस्से को अपडेट कर सकते हैं, कंटेनर के प्रीवियो संस्करण में तेज़ रोलबैक। –

+0

यह वास्तव में बहुत ही रोचक है, मैं डॉकर-लिखने की कोशिश करता हूं – alvarezsh

0

हम, मुझे लगता है कि सबसे अच्छा तरीका है Official mysql image खींच सकते हैं और आपके आवेदन कंटेनर में लिंक करने का है।

उम्मीद है कि यह मदद करता है।

17

स्वीकार किए जाते हैं जवाब कुछ सार समझ में सच हो सकता है, लेकिन यह पूरी तरह से हाथ में बात करने के लिए अप्रासंगिक है। आपको पासवर्ड को स्थिर रूप से निर्दिष्ट करने का एक तरीका चाहिए। और जब तक आप official image का उपयोग नहीं कर रहे हैं, तो आपको इसकी आवश्यकता होगी कि आप "एक प्रक्रिया, एक कंटेनर" dogma का पालन करें या नहीं।

जवाब here बताता है कि कैसे, लेकिन यह एक महत्वपूर्ण सेटिंग छोड़ देता है: आप अभी भी Noninteractive सामने के अंत का उपयोग करने के debconf बताने के लिए है के रूप में वर्णित here

उपर्युक्त के आधार पर Dockerfile पर काम करने का एक उदाहरण यहां दिया गया है।

FROM ubuntu:latest 
MAINTAINER Jonathan Strange <[email protected]> 
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 'JohnUskglass'; \ 
     echo mysql-community-server mysql-community-server/re-root-pass \ 
      password 'JohnUskglass'; \ 
     echo mysql-community-server mysql-community-server/remove-test-db \ 
      select true; \ 
    } | debconf-set-selections \ 
    && apt-get install -y mysql-server apache2 python python-django \ 
     python-celery rabbitmq-server git 

यह भी बहुत क्या official Dockerfile करता है से अलग नहीं है - हालांकि वे कुछ अलग तरह वास्तविक पासवर्ड config संभाल।

कुछ लोगों को इतनी तरह, noninteractive को setting the DEBIAN_FRONTEND वातावरण चर द्वारा सफलता मिली है:

ENV DEBIAN_FRONTEND noninteractive 

हालांकि, कि सभी मामलों में काम करने के लिए प्रतीत नहीं होता। debconf का उपयोग सीधे मेरे लिए अधिक विश्वसनीय साबित हुआ है।

+0

। मैं mysql -u root -proot ERROR 2002 (HY000) देकर mysql कंसोल शुरू नहीं कर सका: सॉकेट '/var/run/mysqld/mysqld.sock' (2) के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं हो सकता। –

+0

@ विनुजन। यह एक अलग समस्या है।यदि यह पहले से ही इस साइट पर एक प्रश्न के रूप में नहीं पूछा गया है, तो आपको इसे एक नए प्रश्न के रूप में पूछना चाहिए। – senderle

+0

मैंने बाद में इस मुद्दे को ठीक कर दिया है। लेकिन मैंने तंत्र को mysql के लिए अलग कंटेनर रखने के लिए बदल दिया। आपके उत्तर के लिए धन्यवाद। मैं इसकी प्रशंसा करता हूँ। कंटेनर के अंदर –

2

शायद ज़रुरत sendarle के जवाब में बहुत स्पष्ट नहीं था, इस तरह के रूप में अपने Dockerfile नीचे दर्शाया गया वातावरण DEBIAN_FRONTEND जोड़ें:

FROM ubuntu:latest 

ENV DEBIAN_FRONTEND noninteractive 

RUN apt-get update \ 
    && apt-get install -y mysql-server mysql-client libmysqlclient-dev 
    --no-install-recommends \ 
    && apt-get clean \ 
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 
+0

। मैं mysql कंसोल शुरू नहीं कर सकता mysql -u root -proot ERROR 2002 (HY000) दे रहा है: सॉकेट '/var/run/mysqld/mysqld.sock' (2) के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं हो सकता है। –

संबंधित मुद्दे