Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker php与本地主机上的apache:ERR\u SSL\u PROTOCOL\u ERROR_Php_Apache_Docker - Fatal编程技术网

Docker php与本地主机上的apache:ERR\u SSL\u PROTOCOL\u ERROR

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 &

我正试图在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 && \
    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