मैं कंटेनर पर PHP ऐप चलाना चाहता हूं, और जब मुझे लोकलहोस्ट जाना है: 5000, वेबसाइट देखने के लिए। जब मैं कंटेनर चलाता हूं, तो मैं लोकलहोस्ट पर वेबसाइट नहीं देख सकता: 5000, केवल 172.12.0.6:80 पर (मुझे नहीं पता कि यह आईपी क्या है)।
यह डॉकरफाइल है:
FROM php:7.0-apache
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
COPY ./index.php /var/www/html/
EXPOSE 5000
यदि आप रुचि रखते हैं तो यह index.php है (मुझे इसकी जटिल जानकारी है):
<html>
<title>website</title>
<body>
<?php
echo "hello world";
?>
</body>
</html>
इस तरह मैं छवि बनाता और चलाता हूं:
$ sudo docker build -t website website/
$ sudo docker run -it --name website --network mynetwork website:latest
जब मैं छवि चलाता हूं तो यह लॉग होता है:
$ sudo docker run -it --name website --network mynetwork website:latest
[Mon Feb 25 16:08:05.912611 2019] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.0.33 configured -- resuming normal operations
[Mon Feb 25 16:08:05.912682 2019] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
1 उत्तर
आप अपने कंटेनर को अपने कस्टम नेटवर्क mynetwork
से जोड़ रहे हैं। इस प्रकार आपको पोर्ट 80->5000
को स्पष्ट रूप से उजागर करने की आवश्यकता है:
docker run -it --name website --network mynetwork -p 5000:80 website:latest
इससे आप localhost:5000
पर कंटेनर पहुंच सकते हैं
दूसरा विकल्प - network=host
मोड का उपयोग करें। इस मोड में आपको बंदरगाहों को बेनकाब करने (और वास्तव में नहीं कर सकते) की आवश्यकता नहीं है, लेकिन आप कंटेनर अलगाव का त्याग करते हैं, क्योंकि कंटेनर मेजबान की नेटवर्किंग का उपयोग कर रहा है।
docker run -it --name website --network=host website:latest
इससे आप localhost:80
पर कंटेनर पहुंच सकते हैं। ध्यान दें कि network=host
के साथ आप कंटेनर के मूल पोर्ट को नहीं बदल सकते।
आपके Dockerfile में कथन EXPOSE 5000
केवल जानकारी के लिए है और वास्तव में ऐसा नहीं है पोर्ट एक्सपोज़िंग करें:
EXPOSE निर्देश वास्तव में पोर्ट को प्रकाशित नहीं करता है। यह छवि बनाने वाले व्यक्ति और कंटेनर चलाने वाले व्यक्ति के बीच एक प्रकार के दस्तावेज़ीकरण के रूप में कार्य करता है, जिसके बारे में बंदरगाहों को प्रकाशक बनाने का इरादा है
संबंधित सवाल
नए सवाल
php
PHP एक व्यापक रूप से उपयोग किया जाता है, उच्च-स्तरीय, गतिशील, वस्तु-उन्मुख, और व्याख्या की गई स्क्रिप्टिंग भाषा मुख्य रूप से सर्वर-साइड वेब विकास के लिए डिज़ाइन की गई है। PHP भाषा के बारे में सवालों के लिए इस्तेमाल किया।