无法使用docker run命令将ubuntu-apache容器与ubuntu-php容器链接

问题描述 投票:0回答:1

我正在尝试学习docker,这是我无法理解的事情。我试图在单独的容器中设置apache2和php(fpm)。我的文件夹结构是这样的

.
├── apache
|   ├── dockerfile
|   └── demo.apache.conf
├── php
|   ├── dockerfile
|   └── www.conf
├── public_html
|   ├── index.php
|   └── test.html
└── docker-compose.yml

这是我的Apache docker文件

FROM ubuntu
RUN ["apt-get","update"]
RUN ["apt-get","install","apache2","-y"]
RUN apache2ctl start
RUN a2enmod proxy_fcgi
COPY demo.apache.conf /etc/apache2/sites-available/000-default.conf
VOLUME  /etc/apache2/
EXPOSE 80
ENTRYPOINT apache2ctl start && tail -f /dev/null

和PHP docker文件

FROM ubuntu
RUN ["apt-get","update"]
RUN apt-get install php7.2-fpm php7.2-mysql php7.2-mbstring php7.2-curl php7.2-dom -y
EXPOSE 9000
COPY www.conf /etc/php/7.2/fpm/pool.d/www.conf
ENTRYPOINT service php7.2-fpm start &&  tail -f /dev/null

和docker-compose.yml文件

version: "3.2"
services:
  php:
    build: './php/'
    networks:
      - backend
    volumes:
      - ./public_html/:/var/www/html/
  apache:
    build: './apache/'
    depends_on:
      - php
    networks:
      - backend
    ports:
      - "8080:80"
    volumes:
      - ./public_html/:/var/www/html/
networks:
  backend:

当我使用]运行时>

docker-compose up -d

我可以在localhost:8080上访问index.php(和test.html)。但是,如果我尝试分别为两个docker文件创建映像,并使用run命令创建容器,如下所示

docker build -t apache2。docker build -t phptest。docker run -d -v / home / user / Desktop / DockerTesting / public_html:/ var / www / html -p 100:80 --name apachecontainer apache2docker run -d -v / home / user / Desktop / DockerTesting / public_html:/ var / www / html -p 9000:9000 --name phpcontainer phptest

当我尝试到达localhost:100时出现以下错误

代理错误代理服务器从上游服务器收到无效响应。代理服务器无法处理请求原因:DNS查找失败:php

但是我可以在localhost:100 / test.html访问html文件

我怀疑docker-compose文件中定义的后端网络可能是关键。因此,我尝试创建一个新网络并将两个容器都添加到该网络中,并将其与默认网桥网络断开连接,但是它不起作用。为什么不手动创建两个单独的容器在这里不起作用?我究竟做错了什么?我该如何解决

UPDATE 1:

我也尝试通过使用]创建图像

docker build -t apache2。docker build -t phptest。

并且在docker中使用image:“ phptest”]]和image:“ apache2”

代替构建命令,它可以正常工作。但是,如果我使用上述docker run
命令使用相同的图像创建容器,则无法使用

UPDATE 2:我使用了demo.apache.conf here

我正在尝试学习docker,这是我无法理解的事情。我试图在单独的容器中设置apache2和php(fpm)。我的文件夹结构是这样的。 ├──apache | ├──...

我已解决问题。我使用了[[docker container inspect

命令来检查四个容器,其中两个是通过docker run命令创建的,而另外两个是通过docker-compose up -d
命令创建的。经过比较,发现使用docker-compose命令创建的两个容器都具有网络别名,并且php容器未映射暴露的端口9000。因此我更改了命令并运行以下]]
docker网络创建testnet

docker run -d -v / home / user / Desktop / DockerTesting / public_html:/ var / www / html --network testnet --network-alias php --name phpcontainer phptest

docker run -d -v / home / user / Desktop / DockerTesting / public_html:/ var / www / html -p 100:80 --network testnet --network-alias apache --name apachecontainer apache2

现在一切似乎都正常了。

docker docker-compose apache2 fastcgi php-7.2
1个回答
0
投票

我已解决问题。我使用了[[docker container inspect

© www.soinside.com 2019 - 2024. All rights reserved.