मैं एक डॉकर फ़ाइल (बेस ओएस सेंटोस होना चाहिए) बनाने की कोशिश कर रहा हूं जो मारियाडब को स्थापित करेगा, मारियाडब शुरू करेगा, और मारियाडब को चालू रखेगा। ताकि मैं अपने एकीकरण परीक्षण (जावा) चलाने के लिए गिटलैब में कंटेनर का उपयोग कर सकूं। अभी तक मेरे पास इतना ही है

FROM centos:7
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]

RUN rm /bin/sh && ln -s /bin/bash /bin/sh

# Install epel and java
RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel wget

ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/

EXPOSE 8080
EXPOSE 3306

# install mariadb
RUN yum -y install mariadb
RUN yum -y install mariadb-server
RUN systemctl start mariadb
ENTRYPOINT tail -f /dev/null

मुझे जो त्रुटि मिल रही है वह डी-बस कनेक्शन प्राप्त करने में विफल है: संचालन की अनुमति नहीं है

1
Chellmic 10 पद 2019, 22:45
केवल एक विचार: क्या आप इसका उपयोग कर सकते हैं github.com/docker-library/ mariadb/blob/… रोडमैप के रूप में?
 – 
SiKing
10 पद 2019, 22:58
क्या आपने अपने होस्ट के cgroup पर वॉल्यूम क्लेम माउंट किया है? आप CMD और ENTRYPOINT दोनों का उपयोग क्यों करेंगे? और वैसे भी सिस्टमड को चलाने के लिए डैन वॉल्श के पुराने प्रस्ताव का उपयोग क्यों कर रहे हैं?
 – 
Guido U. Draheim
10 पद 2019, 23:44
प्रीमियर छवि का उपयोग न करने का कोई कारण? hub.docker.com/r/centos/mariadb-102-centos7
 – 
ShayK
10 पद 2019, 23:46
यह मेरा पहली बार डोकर का उपयोग कर रहा है। अगर मैं प्रीमियर छवि का उपयोग करता हूं तो मुझे नहीं पता कि इसे रूट के रूप में कैसे चलाया जाए और उस पर जावा स्थापित किया जाए
 – 
Chellmic
11 पद 2019, 02:35
आप लगभग हमेशा अपने एप्लिकेशन और डेटाबेस को अलग-अलग कंटेनरों में चलाते हैं। इसके विपरीत, आप लगभग कभी भी एक कंटेनर में systemd नहीं चलाते हैं (यह डॉकर और आपके होस्ट द्वारा पहले से प्रबंधित की जाने वाली बहुत सी चीजों को प्रबंधित करने का प्रयास करता है, और यह निदान करना मुश्किल बनाता है कि आपकी प्रक्रिया वास्तव में क्या कर रही है); डेटाबेस को अग्रभूमि प्रक्रिया के रूप में चलाएं।
 – 
David Maze
11 पद 2019, 03:31

2 जवाब

सिस्टमड सहित कंटेनरों में डिफ़ॉल्ट रूप से कुछ भी नहीं चल रहा है, इसलिए आप mariadb शुरू करने के लिए systemd का उपयोग नहीं कर सकते हैं

अगर हम आधिकारिक mariadb dockerfile का संदर्भ लें, तो हम पा सकते हैं कि आप हमारे dockerfile में CMD ["mysqld"] जोड़कर mariadb शुरू कर सकते हैं।

आपको अपने कंटेनर में RUN yum -y mariadb-server mariadb-client के साथ mariadb स्थापित करना भी सुनिश्चित करना चाहिए क्योंकि यह डिफ़ॉल्ट रूप से भी स्थापित नहीं है

0
Fuseteam 10 फरवरी 2020, 15:39

आप ऐसा कुछ कर सकते हैं:

FROM centos/mariadb-102-centos7

USER root
# Install epel and java
RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel wget

ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/

आप अपने कोड फ़ोल्डर को इस कंटेनर में माउंट कर सकते हैं और इसे docker exec के साथ निष्पादित कर सकते हैं।

हालांकि यह अनुशंसा की जाती है कि आप दो अलग-अलग कंटेनरों का उपयोग करें: एक डीबी के लिए और एक आपके कोड के लिए। फिर आप डीबी कंटेनर से कनेक्ट करने के लिए आवश्यक एनवी वर्र्स कोड कंटेनर पास कर सकते हैं।

0
ShayK 11 पद 2019, 10:57