सिस्टमड या सेवाओं के बिना डॉकर के माध्यम से सेंटोस 7 पर अग्रभूमि में मारियाडीबी को स्थापित करना, कॉन्फ़िगर करना और चलाना

सेंटोस 7 के तहत, मैं समझता हूं कि हम आगे बढ़ रहे हैं mysql-server कार्यान्वयन करने के लिए-संगत MariaDB. मैं एक डॉकर छवि का उपयोग कर रहा हूं centos:latest, जो मुझे सेंटोस 7 के तत्वावधान में रखता है ।

mysqld_safe अग्रभूमि में अवरुद्ध चलाता है । इससे यह आसान हो जाता है: मुझे बस 0 की आवश्यकता है) पैकेज स्थापित करें 1) रूट पासवर्ड बदलें और 2) एक सर्वर को भीतर से चलाएं Dockerfile

डॉकर प्रतिमान में, क्योंकि मुझे मारियाडीबी स्थापित करने में सक्षम होना चाहिए जैसे कि यह एक बैश स्क्रिप्ट में था । मैंने इसका उपयोग करने के विभिन्न तरीके खोजे हैं aptitude उबंटू के तहत लेकिन अभी तक एक समान उत्तर नहीं मिला है yum: मैं सेंटोस 7 पर मारियाडीबी को कैसे स्थापित, कॉन्फ़िगर और चला सकता हूं जैसे कि इसे बैश स्क्रिप्ट के माध्यम से स्थापित किया जा रहा था? mysql_secure_installation एक टीटीई की आवश्यकता प्रतीत होती है ।

मैंने चलाने की कोशिश की है mysqladmin पासवर्ड मैन्युअल रूप से कमांड करता है, लेकिन यह शिकायत करता है कि यह चल रहे माईएसक्यूएल इंस्टेंस से कनेक्ट नहीं हो सकता है । क्योंकि कंटेनरों को चरणों के बीच फेंक दिया जाता है, मेरा मानना है कि मुझे किसी तरह माईएसक्यूएल चलाने और उसी चरण में पासवर्ड बदलने की आवश्यकता है ।

मैंने स्थापित करने का प्रयास किया है initscripts पैकेज मुझे हो जाता है /bin/service लेकिन यह मुझे उपयोग करने के लिए पुनर्निर्देशित करने की कोशिश करता है systemctl start mariadb.service, जो प्रयोग करने योग्य नहीं है क्योंकि डॉकर कंटेनरों को एक मिलता है fakesystemd और नहीं systemd. कोई विचार?

यहाँ मेरा वर्तमान डॉकरफाइल संस्करण है (इस एक में, एक कोशिश कर रहा है tail -f प्रक्रिया को एक के रूप में जीवित रखने के लिए CMD)

FROM    centos:latestMAINTAINER Me (some@guy.com)RUN yum -y install wget epel-releaseRUN cd /usr/local/src && wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm && rpm -Uvh remi-*.rpm && rm remi-*.rpmRUN sed -i 's/enabled=0/enabled=1/' /etc/yum.repos.d/remi*.repoRUN cd /usr/local/src && wget http://apt.sw.be/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm  && rpm -Uvh rpmforge-*.rpm && rm rpmforge-*.rpmRUN rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txtRUN sed -i 's/enabled=0/enabled=1/' /etc/yum.repos.d/rpmforge*.repoRUN yum -y updateRUN yum -y upgrade# mysqlRUN yum -y install mariadb-serverRUN yum -y install initscriptsWORKDIR /usr#RUN echo "bind-address=0.0.0.0" >> /etc/my.cnfRUN /usr/bin/mysql_install_db --datadir="/var/lib/mysql" --user=mysqlRUN /usr/bin/mysqld_safe --datadir="/var/lib/mysql" --socket="/var/lib/mysql/mysql.sock" --user=mysql  >/dev/null 2>&1 &RUN /usr/bin/mysqladmin -u root password SOMEPASSWORDCMD tail -f /var/log/mariadb/mariadb.logEXPOSE 3306

संबंधित:

मैं एक समान मुद्दे पर काम कर रहा हूं, एक डॉकर कंटेनर में मारियाडीबी स्थापित कर रहा हूं । मैंने पाया यह माइस्कल_सुरक्षा_इंस्टॉल चलाने के तरीकों की तलाश में । स्क्रिप्ट को इनपुट खिलाने के तरीके हैं, या आप बस उन आदेशों को चला सकते हैं जो स्क्रिप्ट चलाएंगे । मैंने बाद का विकल्प चुना ।

मैं कमांड की एक ही समस्या में भी भाग गया, जो चल रहे माईएसक्यूएल इंस्टेंस को नहीं ढूंढ रहा था । समस्या यह है कि आपके निर्माण का प्रत्येक चरण एक अलग कंटेनर में चलाया जाता है, इसलिए आपको प्रत्येक कमांड के लिए माईएसक्यूएल शुरू करना होगा, या उन सभी को एक चरण में चलाना होगा । मेरे डॉकरफाइल में यही है:

ARG DATABASE_ROOT_PASSRUN service mysql start \    && mysqladmin -u root password "$DATABASE_ROOT_PASS" \    && mysql -u root -p"$DATABASE_ROOT_PASS" -e "UPDATE mysql.user SET Password=PASSWORD('$DATABASE_ROOT_PASS') WHERE User='root'" \    && mysql -u root -p"$DATABASE_ROOT_PASS" -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1')" \    && mysql -u root -p"$DATABASE_ROOT_PASS" -e "DELETE FROM mysql.user WHERE User=''" \    && mysql -u root -p"$DATABASE_ROOT_PASS" -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%'" \    && mysql -u root -p"$DATABASE_ROOT_PASS" -e "FLUSH PRIVILEGES"

फिर आप इसके साथ निर्माण कर सकते हैं

docker build . --build-arg DATABASE_ROOT_PASS='changeme123'

आप --बिल्ड-आर्ग के लिए दस्तावेज़ीकरण पा सकते हैं यहाँ.

तुम मुझे गलत समझते हो । इसके साथ मेरी समस्या सिस्टमड के तहत सेवा _ एक सेवा के रूप में _ नहीं चल रही है, हर दूसरे कंटेनर तकनीक की तरह ।

आह, कारण #1 मुझे डॉकर क्यों पसंद नहीं है ।

रिकार्ड के लिए, वहाँ रहे हैं आधिकारिक तौर पर समर्थन डोकर छवियों-लेकिन वे नहीं चलाने पर CentOS, और मैं कर रहा हूँ के कुछ हद तक एक CentOS “fanboy है.”