小测试用例:
搬运工-compose.yml
nginx:
image: nginx:1
ports:
- "80:80"
volumes:
- ./testconf:/etc/nginx/conf.d
- ./testhtml:/usr/share/nginx/html
testconf / nginx.conf
server {
listen 80;
server_name _;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/;
}
}
testhtml / index.html中
<!DOCTYPE html>
<html>
<body>
<p>Hello</p>
</body>
</html>
机器创建:
$ docker-machine create --driver digitalocean --digitalocean-access-token xxxx --digitalocean-region "ams3" edgee
推动:
$ eval $(docker-machine env edgee)
$ docker-compose up
$ curl $(docker-machine ip edgee)
当我查看容器内部时,应该安装的文件不在那里。这在本地工作,它适用于机器和虚拟机,但它不适用于digitalocean?
答案 0 :(得分:1)
这是一个错误的期望。您的机器和数字海洋不共享文件夹。如果您的数量低于
HTTP/1.1 400 Bad Request
当前文件夹为 volumes:
- ./testconf:/etc/nginx/conf.d
- ./testhtml:/usr/share/nginx/html
然后执行/user/name/projects
,其中码头指向您的数字海洋会告诉远程码头工具
数字海洋服务器上的docker-compose up
文件夹到容器内的/user/name/projects/testhtml
。主机上没有这样的文件夹,因此将创建并共享一个空白文件夹。
现在,它在本地虚拟机上运行的原因是使用自动共享文件夹
正如您在我的mac /usr/share/nginx/html
上看到的那样,会自动共享。因此,/Users
我发布的任何docker-compose
项目都会自动运行/Users
卷共享。因为来自主机的/Users
共享安装在docker-machine VM内的/Users
上。但是,如果我将项目移动到/Users
的其他文件夹,那么行为将与您现在看到的数字海洋相同。
所以你唯一能做的就是在构建过程中复制你想要的Dockerfile文件。或者将项目复制到远程服务器上并从那里运行
答案 1 :(得分:0)
Tarun的回答让我更好地理解了这个问题。解决它的方法是复制构建中的文件,将其添加到Dockerfile:
COPY local/path /path/in/server
在docker-compose.yaml文件中,向网络应用服务添加一个卷部分:
volumes:
- /usr/src/app/donare/static
如果像我一样你有nginx服务,请从网络应用服务中获取卷,让nginx提供服务:
volumes_from:
- web