音量坐骑不适用于数字海洋

小testing案例:

泊坞窗,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?

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

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

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

现在使用virtualbox在本地工作的原因是使用自动共享文件夹

共享文件夹

正如你可以看到我的Mac /Users自动共享。 所以任何docker-compose项目,我推出目前在/Users音量共享将自动工作。 因为/Users主机的/Users共享安装在docker-machine VM内的/Users 。 但是,如果我将项目移动到/Users其他文件夹,则行为将与您现在看到的数字海洋相同。

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

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

 COPY local/path /path/in/server 

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

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

如果像我一样你有一个nginx服务,从Web应用程序服务的卷获得由nginx服务的文件:

 volumes_from: - web