首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gitlab + DinD + MySQL服务权限问题

Gitlab + DinD + MySQL服务权限问题
EN

Stack Overflow用户
提问于 2017-07-10 12:54:34
回答 2查看 2.2K关注 0票数 47

我创建了两个GitLab作业:

  • 测试单元(在GitLab上使用PHP注册的对接程序)
  • 声纳(使用对接服务运行“Letsdeal/ docker扫描仪”)

我使用以下gitlab-ci-多运行程序配置:

代码语言:javascript
复制
concurrent = 1
check_interval = 0

[[runners]]
  name = "name-ci"
  url = "https://uri/ci"
  token = "token"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "docker:latest"
    privileged = true
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]

测试单元作业工作正常,但Sonar作业在下列消息中失败:

代码语言:javascript
复制
service runner-f66e3b66-project-227-concurrent-0-docker-wait-for-service did timeout

2017-07-05T16:13:18.543802416Z mount: mounting none on /sys/kernel/security failed: Permission denied
2017-07-05T16:13:18.543846406Z Could not mount /sys/kernel/security.
2017-07-05T16:13:18.543855189Z AppArmor detection and --privileged mode might break.
2017-07-05T16:13:18.543861712Z mount: mounting none on /tmp failed: Permission denied

当我将“runner.docker”的配置参数“特权”更改为false时,Sonar作业可以工作,但测试单元失败:

代码语言:javascript
复制
service runner-f66e3b66-project-227-concurrent-0-mysql-wait-for-service did timeout

2017-07-05T15:08:49.178114891Z 
2017-07-05T15:08:49.178257497Z ERROR: mysqld failed while attempting to check config
2017-07-05T15:08:49.178266378Z command was: "mysqld --verbose --help"
2017-07-05T15:08:49.178271850Z 
2017-07-05T15:08:49.178276837Z mysqld: error while loading shared libraries: libpthread.so.0: cannot open shared object file: Permission denied

param“特权”必须是真实的,才能在码头上使用码头。但我不明白为什么MySQL这样的服务会被破坏。

这是我的gitlab-ci文件:

代码语言:javascript
复制
stage :
  - test-unit
  - analyse

.php_job_template: &php_job_template
  image: custom_docker_image
  before_script:
    - eval $(ssh-agent -s) && ssh-add <(echo "$SSH_PRIVATE_KEY")
    - mkdir -p ~/.ssh && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
  services :
    - mysql
  variables:
    MYSQL_DATABASE: blabla
    MYSQL_USER: blabla
    MYSQL_PASSWORD: blabla
    MYSQL_ROOT_PASSWORD: blabla

test_phpunit_dev:
  <<: *php_job_template
  stage: test-unit
  script:
    - mysql -h mysql -u blabla -pblabla <<< "SET GLOBAL sql_mode = '';"
    - php composer.phar install -q
    - php vendor/bin/phpunit -c tests/phpunit.xml

sonar:
  stage: analyse
  image: docker:1.12.6
  services:
    - docker:dind
  script:
    - docker run --rm -v `pwd`:/build -w /build letsdeal/sonar-scanner:2.7 scan -e

我该怎么解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2020-04-30 23:53:26

例如,为什么不使用ciricihq/gitlab-sonar-scanner呢?它不需要使用dind或特权模式

官方github储存库

票数 1
EN

Stack Overflow用户

发布于 2018-10-15 08:23:34

我也遇到了同样的问题,并且能够通过删除MySQL (反正在CI服务器上不需要它)和禁用AppArmor来解决这个问题。在Ubuntu上,您可以运行:

代码语言:javascript
复制
# Remove Mysql
sudo apt-get remove mysql-server

# Disable AppArmor for MySQL
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld

来源:https://www.cyberciti.biz/faq/ubuntu-linux-howto-disable-apparmor-commands/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45012652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档