我有一个用nginx
运行静态html的docker-compose
示例。
目录树:
├── docker-compose.yml
├── nginx
│ ├── app
│ │ └── index.html
│ └── Dockerfile
The docker-compose.yml
nginx:
build: ./nginx
volumes:
- ./nginx/app:/usr/share/nginx/html
ports:
- 8080:80
nginx
目录包含Dockerfile
FROM nginx
一切都运行正常。
问题是,我使用docker-machine
构建了一个Docker-Swarm
基础架构,遵循Docker文档:Local
、swarm-master
和two nodes
。
一切似乎也运行得很好。
$ eval $(docker-machine env --swarm swarm-master)
$[swarm-master]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d8afafeb9f05 few_nginx "nginx -g 'daemon off" 20 minutes ago Up 3 seconds 443/tcp, 192.168.99.102:8080->80/tcp swarm-host-00/few_nginx_1
但是nginx
返回了一个Forbidden
$[swarm-master]$ curl http://192.168.99.102:8080/
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.9.10</center>
</body>
</html>
我进入virtualbox
和container
$[swarm-master]$ docker-machine ssh swarm-host-00
docker@swarm-host-00:~$ docker exec -ti d8afafeb9f05 bash
并且nginx/html
目录中没有任何内容:
root@d8afafeb9f05:/# ls /usr/share/nginx/html/
有必要在volumes
的compose
/swarm
中做一些不同的事情吗?我做错了什么吗?
发布于 2016-02-02 18:31:55
有必要将文件复制到主机或使用COPY
命令在Dockerfile
中构建映像
参考:https://github.com/docker/compose/issues/2799#issuecomment-177998133
https://stackoverflow.com/questions/35129337
复制相似问题