मैं कंटेनर पर 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'
0
pinokyo 25 फरवरी 2019, 19:19

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 निर्देश वास्तव में पोर्ट को प्रकाशित नहीं करता है। यह छवि बनाने वाले व्यक्ति और कंटेनर चलाने वाले व्यक्ति के बीच एक प्रकार के दस्तावेज़ीकरण के रूप में कार्य करता है, जिसके बारे में बंदरगाहों को प्रकाशक बनाने का इरादा है

4
grapes 25 फरवरी 2019, 19:34