Docker php与本地主机上的apache:ERR\u SSL\u PROTOCOL\u ERROR
我正试图在Windows 10的docker桌面上,在docker容器中提供一个带有apache和php的hello_world.php文件 以下是Dockerfile:Docker php与本地主机上的apache:ERR\u SSL\u PROTOCOL\u ERROR,php,apache,docker,Php,Apache,Docker,我正试图在Windows 10的docker桌面上,在docker容器中提供一个带有apache和php的hello_world.php文件 以下是Dockerfile: FROM php:7.3-apache # install git and zip, both needed for composer RUN apt-get update && \ apt-get upgrade -y && \ apt-get install -y git &
FROM php:7.3-apache
# install git and zip, both needed for composer
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y git && \
apt-get install zip unzip
# install composer
RUN curl -sS https://getcomposer.org/installer | php -- \
--install-dir=/usr/bin --filename=composer && chmod +x /usr/bin/composer
RUN a2enmod headers
RUN echo 'ServerName localhost' >> /etc/apache2/apache2.conf
COPY . /var/www/html
WORKDIR /var/www/html
#RUN composer install
EXPOSE 80
如您所见,用于设置composer等的一些附加代码(因此我可以对现有的PHP应用程序进行dockerize)甚至被注释掉了,但即使是基本的hello world PHP文件,也不能使用其他文件(例如no.htaccess)
首先,我使用docker build.
构建图像。然后,当我执行docker run-it-p8000:80d7cd1255a20f
时,我得到控制台输出
[Tue Jun 02 16:01:29.592455 2020] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.38 (Debian) PHP/7.3.18 configured -- resuming normal operations
[Tue Jun 02 16:01:29.592531 2020] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
我觉得不错。
我打开http://localhost:8000
在我的浏览器中,获取“无法建立安全连接。错误\u SSL\u协议\u错误”。服务器日志显示(每次在浏览器中加载页面时显示两行):
我已经研究过了,看起来这是TLS握手的开始
我怎样才能让它工作呢?您在/var/www/html中有任何.htaccess文件吗?看起来Apache正在自动重定向到HTTPS。使用空目录构建映像为/var/www/html并运行
docker run-it-p 8000:80 d7cd1255a20f
可以通过HTTP正确运行。好的,试试这个
遵循文件夹结构
phpExample/
php/
index.php
dockerfile
dockerfile
index.php
当构建完成时
docker run -p 80:80 helloWorld-php-docker
请确保端口80未被使用,或者您可以更改端口号
PS:目录结构不是必需的。我只是为了构造示例而添加了helloworld php(这只是一个html页面和一个php标记,它回显“helloworld”)和当前工作目录中的Dockerfile。如果默认情况下没有,这不是它不起作用的原因。好吧,超级奇怪:我尝试了这个解决方案,它起作用了。然后我把上面贴的dockerfile加了回去。它也起作用了。我怀疑系统重启有帮助,或者我只是启动了错误的容器或类似的东西。经验教训:使用标记确保运行正确的容器。
FROM php:7.3-apache
COPY php/ /var/www/html
EXPOSE 80
<?php
echo "Hello World from Docker container using PHP<br>";
echo '<img src="https://www.docker.com/sites/default/files/d8/2019-07/Moby-logo.png">';
?>
docker build -t helloWorld-php-docker .
docker run -p 80:80 helloWorld-php-docker