2017-02-25 3 views
3

CI 용도의 비트 맵 (bitbucket 파이프 라인)을 사용하여 사용자 정의 도커 이미지를 작성하려고합니다. 빌드하고 코드를 테스트 한 후, 나는 sonarqube로 분석을 할 수 있었으면 좋겠습니다.도커 컨테이너에서 sonar-scanner를 실행할 수 없습니다. 사용 권한이 거부되었습니다.

내 사용자 정의 이미지에서 나는 sonar-scanner를 설치하려고 했으므로 컨테이너에서 실행될 것입니다.

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

가 이미 스캐너 디렉토리에 대한 사용 권한과 소유권을 설정하는 여러 가지 방법을 시도했지만 아무 일 없다 : 그러나, 컨테이너 내부 (하나의 bitbucket 또는 내 로컬 컴퓨터에)이이 오류와 함께 실패합니다.

놀랍게도, 플래시를 사용하여 컨테이너를 실행해도 --privileged=true 나는 여전히 같은 오류가 발생합니다.

고정식 기본 사항에는 무엇이 있습니까?

이것은 Dockerfile의 마지막 버전입니다 :

# Pull base image. 
FROM node:6 

LABEL maintainer "Gabriel Araujo <[email protected]>" 

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 
+0

당신의 고정 표시기 실행 명령은 무엇인가? – gbolo

+0

나는 나의 대답에 시험되고 작동하는 예를 제공했다. 이게 유용하다고 생각하시면 upvote하고 제 대답을 받아주십시오. – gbolo

+0

나는 당신을 받아 들였다. 당신이 알아 냈을 때 실제로 Java 8이 필요했습니다. 그러나 오류 메시지는 사용 권한에 대해 지적한 부분에 도움이되지 않았습니다. 어쨌든 도와 줘서 고마워. –

답변

3

자바 (8) 수중 음파 탐지기 스캐너를 필요로하기 때문에, 먼저 설치해야합니다. Dockerfile에 추가했습니다. Jessie 백 포트에서 설치해야합니다.

당신은 아마 그것을 작동합니다 기존 Install dependencies 섹션 이제

# Pull base image. 
FROM node:6 

LABEL maintainer "Gabriel Araujo <[email protected]>" 

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 
관련 문제