【问题标题】:Volume mounts not working with digital ocean体积安装不适用于数字海洋
【发布时间】:2018-03-01 21:50:38
【问题描述】:

小测试用例:

docker-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)

当我查看容器内部时,应该安装的文件不存在。这适用于本地,适用于机器和 virtualbox,但不适用于 digitalocean?

【问题讨论】:

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


    【解决方案1】:

    这是一个错误的期望。您的机器和您的数字海洋不共享文件夹。当你有以下卷数时

      volumes:
        - ./testconf:/etc/nginx/conf.d
        - ./testhtml:/usr/share/nginx/html
    

    您当前的文件夹是/user/name/projects,然后在 docker 指向您的数字海洋时执行 docker-compose up 会告诉远程 docker 映射 数字海洋服务器上的/user/name/projects/testhtml 文件夹到容器内的/usr/share/nginx/html。主机上没有这样的文件夹,因此将创建和共享一个空白文件夹。

    现在它可以在本地使用 virtualbox 的原因是使用了自动共享文件夹

    正如你在我的 mac 上看到的那样,/Users 是自动共享的。因此,我启动的任何docker-compose 项目存在于/Users 中,卷共享将自动工作。因为来自主机的/Users 共享安装在docker-machine VM 内的/Users 上。但是,如果我将项目移动到 /Users 的其他文件夹,那么行为将与您现在看到的数字海洋相同。

    所以你唯一能做的就是,在构建过程中将你想要的文件复制到 Dockerfile 中。或者复制远程服务器上的项目并从那里运行它

    【讨论】:

    • 我做了复制,但它也不起作用,我在 Dockerfile 中有 COPY /folder /usr/src/app/folder 但它什么也没做。
    • 您需要从 compose 文件中删除挂载,否则挂载会用空白文件夹覆盖容器内的文件夹。
    • 从卷中删除副本起到了作用,我将添加一条带有详细信息的新评论。
    【解决方案2】:

    Tarun 的回答让我更好地理解了这个问题。解决它的方法是复制构建中的文件,将其添加到您的 Dockerfile:

    COPY local/path /path/in/server
    

    在 docker-compose.yaml 文件中,将卷部分添加到 Web 应用服务:

    volumes:
      - /usr/src/app/donare/static
    

    如果你像我一样有 nginx 服务,请从 web 应用服务中获取卷以让 nginx 提供文件:

    volumes_from:
      - web
    

    【讨论】:

    • 不要使用volumes_from,它已被弃用并且在 compose 版本 3 中不可用。您应该创建一个命名卷并使用相同的共享数据
    • 谢谢@TarunLalwani,我会这样做的!
    猜你喜欢
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    相关资源
    最近更新 更多