gpt4 book ai didi

php - 无法通过 docker 容器中的 apache 访问本地网站(windows 和 docker 工具箱)

转载 作者:可可西里 更新时间:2023-11-01 10:04:50 27 4
gpt4 key购买 nike

我使用 apache2 和一些配置构建了一个 Docker 镜像,以便在 Windows 上运行本地 Web 服务器。

这是 Dockerfile :

FROM php:5.6.15-apache

RUN apt-get update && apt-get install -y \
apt-utils vim git php5-mysql php5-memcache php5-memcached php5-intl \
sendmail aptitude wget
RUN apt-get install libapache2-mod-php5 -y -o Dpkg::Options::="--force-confdef"
RUN docker-php-ext-install mbstring
RUN docker-php-ext-install pdo pdo_mysql
RUN apt-get install libcurl4-gnutls-dev -y
RUN docker-php-ext-install curl
RUN apt-get update && apt-get install -y zlib1g-dev libicu-dev g++
RUN docker-php-ext-configure intl
RUN docker-php-ext-install intl

RUN a2enmod rewrite

ENV APACHE_RUN_USER test
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid

EXPOSE 80

COPY php.ini /usr/local/etc/php/php.ini

COPY apache-config.conf /etc/apache2/sites-enabled/000-default.conf

在 apache-config.conf 中,我只有一个小虚拟主机:

<VirtualHost *:80>
ServerName test.loc
DocumentRoot /var/www/html/test

<Directory /var/www/html/test/>
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

在我的/c/Users/public/sites/test 文件夹中,我只有一个包含以下代码的 index.php 文件:

<?php
phpinfo();

我在 Docker Quickstart Terminal 中使用这个命令构建了我的镜像

docker build -t php56 .

然后我构建了我的容器:

docker run --name=php56_container -t --rm -v "//c/Users/Public/sites:/var/www/html" -p 80:80 -p 8080:8080 php56

容器创建良好,但我收到以下消息:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2.
Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2.
Set the 'ServerName' directive globally to suppress this message
[Mon Dec 21 14:18:24.968215 2015] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) configured -- resuming normal operations
[Mon Dec 21 14:18:24.968982 2015] [core:notice] [pid 1] AH00094: Command line: '

我的问题是我无法访问我的测试网站,我不知道为什么。

我尝试在/etc/apache2/apache2.conf 中添加“ServerName 172.17.0.2”指令,但是当我重新启动 apache2 服务时,它会停止我的容器运行。

我试图检查我的容器以查看它的 ip,但有时它没有,有时它是 172.17.0.2

我在浏览器中尝试了以下地址,但无法访问任何内容:

http://test.loc

172.17.0.2:80

0.0.0.0:80

有人知道如何在 Windows 上使用 Docker 运行网络服务器并使用他的服务器名访问站点吗? (测试.loc)

最佳答案

您需要知道的是,当您在 Windows 上运行 docker 时,它实际上并没有在您的 Windows 机器上运行,而是 docker 工具箱创建了一个运行 docker 的虚拟盒子 VM。您可以在此处阅读更多信息 https://docs.docker.com/engine/installation/windows/因此您可以在虚拟机 VM 拥有的 ip 上检查您的网站。要找出虚拟机的 ip 地址,您可以使用以下命令

docker-machine ip

关于php - 无法通过 docker 容器中的 apache 访问本地网站(windows 和 docker 工具箱),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34397980/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com