音量不适用于数字海洋

时间:2017-09-20 17:52:28

标签: docker nginx docker-compose dockerfile docker-machine

小测试用例:

搬运工-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?

2 个答案:

答案 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。主机上没有这样的文件夹,因此将创建并共享一个空白文件夹。

现在,它在本地虚拟机上运行的原因是使用自动共享文件夹

shared folders

正如您在我的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