我已解决问题。我使用了[[docker container inspect
我正在尝试学习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网络创建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 container inspect