簡體   English   中英

Docker php 與 apache 在 localhost:ERR_SSL_PROTOCOL_ERROR

[英]Docker php with apache on localhost: ERR_SSL_PROTOCOL_ERROR

I am trying to serve a hello_world.php file with apache and php in a docker container on Windows 10 with Docker Desktop.

這是 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

如您所見,用於設置作曲家等的一些附加代碼(因此我可以對接現有的 PHP 應用程序)甚至被注釋掉,但它甚至不適用於基本的 hello world php 文件且沒有其他文件(無 Z80252C42AB88A8AA0例如)。

首先,我使用docker build. . 然后當我執行docker run -it -p 8000:80 d7cd1255a20f時,我得到了控制台 output

[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並得到“無法建立安全連接。ERR_SSL_PROTOCOL_ERROR”。 服務器日志顯示(每次我在瀏覽器中加載頁面時兩行):

172.17.0.1 - - [02/Jun/2020:16:02:55 +0000] "\x16\x03\x01\x02" 400 0 "-" "-"
172.17.0.1 - - [02/Jun/2020:16:02:55 +0000] "\x16\x03\x01\x02" 400 0 "-" "-"

我已經對此進行了研究,看起來這是 TLS 握手的開始。

我怎樣才能讓它工作?

您在/var/www/html中有任何 .htaccess 文件嗎? 看起來 Apache 正在執行到 HTTPS 的自動重定向。 使用/var/www/html的空目錄構建映像並運行docker run -it -p 8000:80 d7cd1255a20f正確地在 HTTP 上運行。

好的試試這個

遵循文件夾結構

phpExample/
   php/
      index.php
   dockerfile

dockerfile

FROM php:7.3-apache
COPY php/ /var/www/html
EXPOSE 80

index.php

<?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

請確保端口 80 未被使用,或者您可以做些什么來更改端口號

PS:目錄結構不是強制性的。 我添加只是為了構建示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM