所以我使用gitlab-ci在docker容器中部署我的网站,因为gitlab-ci docker runner似乎没有做我想做的事情我正在使用shell Actuator 并让它运行 docker-compose up -d
. 这就是问题所在 .
我的docker-container中有2卷 . ./:/var/www/html/
(这是我的git repo的内容,所以我想要在构建时替换的文件)和一个_st11128_这个mount /srv/data:/var/www/html/software/permdata
的挂载(这是我服务器上的持久挂载) .
当gitlab-ci运行器启动时,它会尝试在容器运行时删除所有文件,但由于mount中的这个mount会得到 device busy
并中止 . 因此,在运行构建之前,我必须手动停止并删除容器(哪种方式会破坏构建自动化) .
我想要解决这个问题的选项:
-
在gitlab-ci-multi-runner启动之前停止并删除容器(似乎不可能)
-
将git数据添加到我的docker容器中,并且只挂载我的permdata(好像你不能将数据添加到容器中而没有与docker compose一样的volume选项,就像你在Dockerfile中一样)
选项2将是理想的,因为它还可以解决我对文件权限的问题 . 也许有人遇到了同样的问题,可以给我一个建议
1 回答
那是对的 . Compose文件不是要替换Dockerfile,而是为应用程序或项目运行多个映像 .
您可以修改
Dockerfile
以复制git文件 .