音量坐骑不适用于数字海洋
小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 up
docker指向您的数字海洋会告诉远程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