docker - 由于Docker永久卷,在GitLab顶部构建的管道失败

标签 docker gitlab gitlab-ci-runner

我正在gitlab中设置CI / CD管道。我在服务器上运行了自托管的gitlab版本11.4。我正在使用gitlab-runner实例的shell执行程序。在我的源代码中,有一个docker-compose.yml文件,其中包含8个不同的容器(mysql,elasticsearch,php,nginx,队列)。

当我推送新代码时,它将触发定义的管道并因以下错误而停止

Running with gitlab-runner 11.6.0 (f100a208)
  on iZAPLabs runner 9a639f82
Using Shell executor...
Running on ip-10-250-142-190...
Fetching changes...
warning: could not open directory 'docker/.data/db/ginvoicing_dev/': Permission denied
warning: could not open directory 'docker/.data/db/mysql/': Permission denied
warning: could not open directory 'docker/.data/db/performance_schema/': Permission denied
warning: failed to remove docker/.data/redis/dump.rdb: Permission denied
warning: failed to remove docker/.data/db/ib_logfile0: Permission denied
warning: failed to remove docker/.data/db/ginvoicing_dev: Permission denied
warning: failed to remove docker/.data/db/ibdata1: Permission denied
warning: failed to remove docker/.data/db/auto.cnf: Permission denied
warning: failed to remove docker/.data/db/mysql: Permission denied
warning: failed to remove docker/.data/db/performance_schema: Permission denied
warning: failed to remove docker/.data/db/ib_logfile1: Permission denied
warning: failed to remove docker/.data/elasticsearch: Permission denied
warning: failed to remove docker/var/run/php: Permission denied
ERROR: Job failed: exit status 1

.data目录将Docker卷安装在不同的容器中。但是我不知道为什么新的推送试图删除它们。我什至尝试使用“缓存”指令。但是没有运气。

任何帮助,将不胜感激。

最佳答案

我猜gitlab运行程序本身以用户git或gitlab或gitlab-runner或类似的身份运行(只需在脚本部分中添加whoami即可确定您是否不知道)。
您的大多数Docker容器都以root用户身份在容器内运行。因此,每次使用位于git存储库中的卷时,当容器更改数据时,权限都会更改。停止容器后,您的gitlab用户将无法为新作业清理存储库。

一些想法(但也许没人能解决您的问题)

a)将您的gitlabRunner用户添加到docker组
b)尝试运行sudo git reset --hardc)将docker卷的位置移到存储库外部,也许移至/ tmp(并且在完成工作后不要忘记删除它们)。

关于docker - 由于Docker永久卷,在GitLab顶部构建的管道失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54053494/

相关文章:

docker - Gitlab-CI:跨服务通信

apache - 带有 Apache 服务器而不是 Nginx 的 GitLab 7.2.1

GitLab CI/CD 未设置变量在 CI/CD 设置中设置

docker - docker nginx-尝试为nginx.conf/default.conf添加卷时不会上升

docker - 如何在Canopy( Selenium 库)中设置ChromeDriver端口?

docker - 无法拉取 docker 镜像,得到 'remote error: access denied'

ssl - 创建 TLS 配置时出错 (v1.3.7)

git - 在 Jenkins 中配置 GitLab 存储库

Python-gitlab API V4

android - 未找到 GitLab CI Android SDK