【发布时间】:2021-05-11 11:31:50
【问题描述】:
我正在尝试使用 Docker Swarm 创建一个 php: apache 服务。我有 3 个节点,管理器,node1,node2。 我已经创建了 Dockerfile 文件:
FROM php:apache
COPY html/ /var/www/html/
还有 docker-compose.yml 文件:
version: "3"
networks:
network1:
services:
php:
build:
context: ./
dockerfile: Dockerfile
image: "php:apache"
ports:
- "80:80"
deploy:
mode: global
networks:
- network1
当我跑步时
docker stack deploy --compose-file docker-compose.yml s2
服务创建正确(3 REPLICAS)
[vagrant@manager php]$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
ojoz9i15gud4 s2_php global 3/3 php:apache *:80->80/tcp
但我无法访问 php 内容,因为我得到了这个:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access this resource.</p>
<hr>
<address>Apache/2.4.38 (Debian) Server at 192.168.100.100 Port 80</address>
</body></html>
所以我将卷添加到 docker-compose.yml
version: "3"
networks:
network1:
services:
php:
build:
context: ./
dockerfile: Dockerfile
image: "php:apache"
ports:
- "80:80"
volumes:
- ./html/:/var/www/html/
deploy:
mode: global
networks:
- network1
但现在当我创建服务时只在管理器节点中,1 REPLICA:
[vagrant@manager php]$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
5e9ts14itaow s2_php global 1/1 php:apache *:80->80/tcp
谁能解释一下为什么会这样?
【问题讨论】:
-
你是否在每个节点上都创建了html目录?
-
@BMitch 谢谢!正是这样
标签: php docker apache docker-compose docker-swarm