我正在尝试部署容器,并从docker stack ps testapp --no-trunc
得到此错误:invalid mount config for type "bind": bind source path does not exist: /home/john/valet/testapp
。
我正在使用docker-compose
。我知道在部署之前,它会使我的相对卷映射变成绝对的卷映射,并且在远程主机上/home/john/valet/testapp
不存在。
volumes:
- ./:/var/www/:cached
但是我不确定如何解决这个问题。
P.S。在本地,一切都可以与docker-compose build && docker-compose up -d
配合使用,在docker hub上,我的自动构建也可以成功构建。
已编辑:以防万一添加源代码回购:https://github.com/neorganic/dockertest
答案 0 :(得分:1)
您需要做的就是为卷指定正确的路径。您可以创建一个单独的文件并将其命名为docker-compose-production.yml
。
volumes:
- /srv/data/www/:/var/www/
此外,请记住,对于生产系统,您要使用swarm
模式(docker swarm init
)并使用docker swarm deploy
应用stach更改。
:cached
选项仅适用于OSX系统,最有可能在生产中使用基于Linux的OS。
答案 1 :(得分:0)
尝试将其更改为:
- $PWD:/var/www/:cached
我认为您需要完整的路径
答案 2 :(得分:0)
所以实际的问题是我不了解该卷必须在我正在部署容器的主机上存在。出于某种原因,我认为它是从本地设备复制/同步的。
我还得出结论,在docker-swarm
解决此问题后,我宁愿没有这种将源代码托管在kubernetes
中的复杂性,因此我切换到{{1 }}(和kubernetes
)。