【问题标题】:Can't run sonar-scanner inside docker container: Permission denied无法在 docker 容器内运行声纳扫描仪:权限被拒绝
【发布时间】:2017-07-16 00:22:59
【问题描述】:

我正在尝试使用 CI 目的(bitbucket 管道)构建自定义 docker 映像。在构建和测试我的代码之后,我希望我可以使用 sonarqube 进行一些分析。

在我的自定义图像上,我尝试安装声纳扫描仪,因此在容器中时它只会被执行。但是,在容器内部(在 bitbucket 或我的本地计算机上)它失败并出现以下错误:

/sonar-scanner-2.8/bin/sonar-scanner: 108: exec: : Permission denied

我已经尝试了许多不同的方法来设置扫描仪目录的权限和所有权,但没有任何效果。

更令人惊讶的是,即使使用 flash --privileged=true 运行容器,我仍然会遇到同样的错误。

我在 docker 基础知识方面缺少什么?

这是我最后一个版本的 Dockerfile:

# Pull base image.
FROM node:6

LABEL maintainer "Gabriel Araujo <contact@gbiel.com>"

ENV SONAR_SCANNER_VERSION 2.8
ENV SONAR_SCANNER_HOME /home/sonar-scanner-${SONAR_SCANNER_VERSION}
ENV SONAR_SCANNER_PACKAGE sonar-scanner-${SONAR_SCANNER_VERSION}.zip
ENV SONAR_RUNNER_HOME ${SONAR_SCANNER_HOME}
ENV PATH $PATH:${SONAR_SCANNER_HOME}/bin
ENV WORKDIR /home/workspace

# Define working directory.
WORKDIR ${WORKDIR}

# Install dependencies
RUN apt-get -yqq update && \
    apt-get -yqq --no-install-recommends install git bzip2 curl unzip && \
    npm install -g gulp bower && \
    npm cache clean && \
    apt-get -yqq autoremove && \
    apt-get -yqq clean && \
    rm -rf /var/lib/apt/lists/* /var/cache/* /tmp/* /var/tmp/*

# Allow root for bower
RUN echo '{ "allow_root": true }' > /root/.bowerrc

# Download sonar
RUN curl --insecure -OL https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/${SONAR_SCANNER_PACKAGE} && \
  unzip ${SONAR_SCANNER_PACKAGE} -d /home && \
  rm ${SONAR_SCANNER_PACKAGE}

RUN addgroup sonar && \
  useradd -s /usr/sbin/nologin -d ${SONAR_SCANNER_HOME} -g sonar sonar && \
  chown -R sonar:sonar ${SONAR_SCANNER_HOME} && \
  chown -R sonar:sonar ${WORKDIR}

USER sonar

【问题讨论】:

  • 你的 docker run 命令是什么?
  • 我在回答中提供了一个经过测试且有效的示例。如果您觉得这很有用,请点赞并接受我的回答。
  • 我接受了你的回答。如您所见,它确实需要 Java 8。但是,错误消息并没有帮助指出有关权限的内容。无论如何,谢谢你的帮助。

标签: docker sonarqube sonar-runner


【解决方案1】:

需要首先安装 Java 8,因为声纳扫描仪需要它。我已将其添加到您的 Dockerfile 中。需要从 jessie backports 安装。

您可能应该将我添加的内容合并到您现有的Install dependencies 部分

# Pull base image.
FROM node:6

LABEL maintainer "Gabriel Araujo <contact@gbiel.com>"

ENV SONAR_SCANNER_VERSION 2.8
ENV SONAR_SCANNER_HOME /home/sonar-scanner-${SONAR_SCANNER_VERSION}
ENV SONAR_SCANNER_PACKAGE sonar-scanner-${SONAR_SCANNER_VERSION}.zip
ENV SONAR_RUNNER_HOME ${SONAR_SCANNER_HOME}
ENV PATH $PATH:${SONAR_SCANNER_HOME}/bin
ENV WORKDIR /home/workspace

# Define working directory.
WORKDIR ${WORKDIR}

# Install OpenJDK 8
RUN echo 'deb http://deb.debian.org/debian jessie-backports main' > /etc/apt/sources.list.d/jessie-backports.list && \
     apt-get update && \
     apt-get install -y -t jessie-backports openjdk-8-jre-headless ca-certificates-java

# Install dependencies
RUN apt-get -yqq update && \
    apt-get -yqq --no-install-recommends install git bzip2 curl unzip && \
    npm install -g gulp bower && \
    npm cache clean && \
    apt-get -yqq autoremove && \
    apt-get -yqq clean && \
    rm -rf /var/lib/apt/lists/* /var/cache/* /tmp/* /var/tmp/*

# Allow root for bower
RUN echo '{ "allow_root": true }' > /root/.bowerrc

# Download sonar
RUN curl --insecure -OL https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/${SONAR_SCANNER_PACKAGE} && \
  unzip ${SONAR_SCANNER_PACKAGE} -d /home && \
  rm ${SONAR_SCANNER_PACKAGE}

RUN addgroup sonar && \
  useradd -s /usr/sbin/nologin -d ${SONAR_SCANNER_HOME} -g sonar sonar && \
  chown -R sonar:sonar ${SONAR_SCANNER_HOME} && \
  chown -R sonar:sonar ${WORKDIR}

USER sonar

现在它应该可以工作了:

docker build -t sonar-test .
docker run -it --rm sonar-test /home/sonar-scanner-2.8/bin/sonar-scanner --help
INFO: 
INFO: usage: sonar-scanner [options]
INFO: 
INFO: Options:
INFO:  -D,--define <arg>     Define property
INFO:  -h,--help             Display help information
INFO:  -v,--version          Display version information
INFO:  -X,--debug            Produce execution debug output
INFO:  -i,--interactive      Run interactively

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 2018-10-31
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 2017-07-08
    相关资源
    最近更新 更多