php docker链接apache docker

xin*_*a1i 7 php apache docker docker-compose

我建造了两个码头工人,一个带有apache的码头工人,一个带有php5的码头工人,我使用docker-compose来启动.

directoy apache2中的apache2 Dockerfile:

FROM debian:latest
RUN apt-get update && apt-get install -y apache2
ADD test.php /var/www/html

CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Run Code Online (Sandbox Code Playgroud)

和test.php:

<?php
phpinfo();
?>
Run Code Online (Sandbox Code Playgroud)

目录php中的php5 Dorckerfile:

FROM debian:latest
RUN apt-get update && apt-get install -y php5
Run Code Online (Sandbox Code Playgroud)

泊坞窗,compose.yml:

apache:
    build: ./apache2
    container_name: apache
    ports:
      - "80:80"
    links:
      - "php5"

php5:
    build: ./php
    container_name: php
Run Code Online (Sandbox Code Playgroud)

然后我跑:

docker-compose up
Run Code Online (Sandbox Code Playgroud)

apache2服务器启动成功.然后我通过http:// server_ip访问这个服务器,然后我得到debian的索引.但是当我访问http://server_ip/test.php时,只需要这样:

<?php
phpinfo();
?>
Run Code Online (Sandbox Code Playgroud)

PHP只是不起作用.我不是为什么.

cyt*_*pia 6

您可以使用PHP-FPM分离Apache和PHP.但是,DocumentRoot必须安装在两个容器上.

Apache必须能够在本地(在其容器内)以及PHP-FPM服务器上访问文件.

我目前正在研究同样的问题,请看看我的docker-compose.yml

https://github.com/cytopia/devilbox/blob/master/docker-compose.yml

两个卷(在PHP和apache中)都被挂载到 /shared/httpd


ivo*_*oba 1

我想说不可能将 php 作为 apache 模块运行单独的容器。我想这就是沃尔夫冈的意思。

如果你想将 apache 和 php 分开在两个不同的容器中,你需要将 php 作为 fpm 运行。
看看这里的灵感:如何正确地将 php-fpm 和 Nginx Docker 容器链接在一起?

如果您需要将 apache 和 php 作为 apache_mod 运行,请使用如下组合容器:https: //github.com/docker-library/php/blob/fec7f537f049aafd2102202519c3ca9cb9576707/5.5/apache/Dockerfile 来自:https://hub.docker。 com/_/php/