تثبيت وتكوين وتشغيل ماريادب في المقدمة على سينتوس 7 عبر عامل الميناء دون سيستمد أو الخدمات

تحت سينتوس 7 ، وأنا أفهم أننا نتحرك من mysql-server إلى ماريادب متوافق مع التنفيذ. أنا باستخدام صورة عامل الميناء من 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'

يمكنك العثور على وثائق ل build بناء الارجنتين هنا.

أنت تسيء فهمي. مشكلتي معها هي _لا _ تشغيل الخدمة _ كخدمة _ تحت النظام ، مثل كل تقنية حاوية أخرى.

آه ، السبب #1 لماذا لا أحب عامل الميناء.

لكنها لا تعمل على سينت أو إس ، وأنا إلى حد ما من سينت أو إس “بوي.”