Sonarqube 为什么Sonar scanner 4.2无法创建用户缓存?

Sonarqube 为什么Sonar scanner 4.2无法创建用户缓存?,sonarqube,sonarqube-scan,sonar-runner,sonarscanner,Sonarqube,Sonarqube Scan,Sonar Runner,Sonarscanner,使用Docked sonar scanner 4.2官方图像,我尝试运行sonar scanner的示例Docker运行操作,得到 无法创建用户缓存:/usr/src/.sonar/cache原因:Java.nio.file.accessdeniedexception:/usr/src/.sonar 每次都是。这是用户在图像上的问题吗?很难相信,因为这是一张官方的声纳扫描仪Docker图像你有没有用-v”/path/to/project:/usr/src“将任何东西安装到/usr/src上 您是

使用Docked sonar scanner 4.2官方图像,我尝试运行sonar scanner的示例Docker运行操作,得到
无法创建用户缓存:/usr/src/.sonar/cache
原因:Java.nio.file.accessdeniedexception:/usr/src/.sonar

每次都是。这是用户在图像上的问题吗?很难相信,因为这是一张官方的声纳扫描仪Docker图像

你有没有用
-v”/path/to/project:/usr/src“
将任何东西安装到/usr/src上

您是否使用
-v”/path/to/project:/usr/src“
将任何内容装载到/usr/src

在Linux上,我必须手动创建文件夹并设置正确的chmod:

mkdir .sonar .sonar/cache .scannerwork
sudo chmod -R 777 .sonar
sudo chmod -R 777 .scannerwork
为了使扫描自动化,我创建了一个docker compose sonarqube.yml,其中包含:
-sonarqube服务器
-sonarqube数据库
-tha声纳QUBE扫描仪

version: '3.7'

services:
  # Sonarqube server : continuous code quality + security
  # User = admin, password = admin
  # The first time, we need to adjust docker parameters for sonarqube. Execute commands in the section 'Docker Host Requirements' from https://hub.docker.com/_/sonarqube/ : sudo sysctl -w vm.max_map_count=262144; sudo sysctl -w fs.file-max=65536; ulimit -n 65536; ulimit -u 4096; docker-compose -f docker-compose-sonarqube.yml up
  sonarqube:
    image: sonarqube:8.3-community
    depends_on:
      - sonarqube-db
    ports:
      - "54380:9000"
    expose:
      - "9000"
    networks:
      - sonarnet
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://sonarqube-db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs
      - sonarqube_temp:/opt/sonarqube/temp
  # Sonarqube database
  sonarqube-db:
    image: postgres
    networks:
      - sonarnet
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
    volumes:
      - postgresql:/var/lib/postgresql
      # This needs explicit mapping due to https://github.com/docker-library/postgres/blob/4e48e3228a30763913ece952c611e5e9b95c8759/Dockerfile.template#L52
      - postgresql_data:/var/lib/postgresql/data
  # Sonarqube client (scanner)
  sonarqube-scanner-cli:
    image: sonarsource/sonar-scanner-cli
    depends_on:
      - sonarqube
    networks:
      - sonarnet
    volumes:
      - ./:/usr/src
    environment:
      SONAR_HOST_URL: http://sonarqube:9000

networks:
  sonarnet:
    driver: bridge

volumes:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_logs:
  sonarqube_temp:
  postgresql:
  postgresql_data:
在声纳项目中设置项目源。属性:

# must be unique in a given SonarQube instance
sonar.projectKey=myapp

# --- optional properties ---

# defaults to project key
sonar.projectName=My App
# defaults to 'not provided'
#sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Defaults to .
sonar.sources=./symfony/src

# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8

# Sonarqube server url
sonar.host.url=http://sonarqube:9000
最后运行sonarqube.sh

# Usage : sh sonarqube.sh firefox

sonarcube() {
    sonarqubePort=54380
    sudo date # Ask for the password at the begining
    docker-compose -f docker-compose-sonarqube.yml up --d
    isServerUp=1
    while [ "$isServerUp" != "0" ]; do # Wait for sonarcube server to be up
        echo "Waiting for sonarqube. This may take 1 min ..."
        curl http://localhost:$sonarqubePort -s|grep "window.serverStatus"|grep "UP"
        isServerUp=$?
        sleep 1
    done
    sleep 3
    mkdir .sonar .sonar/cache .scannerwork
    sudo chmod -R 777 .sonar
    sudo chmod -R 777 .scannerwork
    docker-compose -f docker-compose-sonarqube.yml start sonarqube-scanner-cli;
    docker-compose -f docker-compose-sonarqube.yml logs -f sonarqube-scanner-cli;
    firefox http://localhost:54380/dashboard?id=myapp
    echo "View Sonarqube results at http://localhost:$sonarqubePort/dashboard?id=myapp"
}

sonarcube

在Linux上,我必须手动创建文件夹并设置正确的chmod:

mkdir .sonar .sonar/cache .scannerwork
sudo chmod -R 777 .sonar
sudo chmod -R 777 .scannerwork
为了使扫描自动化,我创建了一个docker compose sonarqube.yml,其中包含:
-sonarqube服务器
-sonarqube数据库
-tha声纳QUBE扫描仪

version: '3.7'

services:
  # Sonarqube server : continuous code quality + security
  # User = admin, password = admin
  # The first time, we need to adjust docker parameters for sonarqube. Execute commands in the section 'Docker Host Requirements' from https://hub.docker.com/_/sonarqube/ : sudo sysctl -w vm.max_map_count=262144; sudo sysctl -w fs.file-max=65536; ulimit -n 65536; ulimit -u 4096; docker-compose -f docker-compose-sonarqube.yml up
  sonarqube:
    image: sonarqube:8.3-community
    depends_on:
      - sonarqube-db
    ports:
      - "54380:9000"
    expose:
      - "9000"
    networks:
      - sonarnet
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://sonarqube-db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs
      - sonarqube_temp:/opt/sonarqube/temp
  # Sonarqube database
  sonarqube-db:
    image: postgres
    networks:
      - sonarnet
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
    volumes:
      - postgresql:/var/lib/postgresql
      # This needs explicit mapping due to https://github.com/docker-library/postgres/blob/4e48e3228a30763913ece952c611e5e9b95c8759/Dockerfile.template#L52
      - postgresql_data:/var/lib/postgresql/data
  # Sonarqube client (scanner)
  sonarqube-scanner-cli:
    image: sonarsource/sonar-scanner-cli
    depends_on:
      - sonarqube
    networks:
      - sonarnet
    volumes:
      - ./:/usr/src
    environment:
      SONAR_HOST_URL: http://sonarqube:9000

networks:
  sonarnet:
    driver: bridge

volumes:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_logs:
  sonarqube_temp:
  postgresql:
  postgresql_data:
在声纳项目中设置项目源。属性:

# must be unique in a given SonarQube instance
sonar.projectKey=myapp

# --- optional properties ---

# defaults to project key
sonar.projectName=My App
# defaults to 'not provided'
#sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Defaults to .
sonar.sources=./symfony/src

# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8

# Sonarqube server url
sonar.host.url=http://sonarqube:9000
最后运行sonarqube.sh

# Usage : sh sonarqube.sh firefox

sonarcube() {
    sonarqubePort=54380
    sudo date # Ask for the password at the begining
    docker-compose -f docker-compose-sonarqube.yml up --d
    isServerUp=1
    while [ "$isServerUp" != "0" ]; do # Wait for sonarcube server to be up
        echo "Waiting for sonarqube. This may take 1 min ..."
        curl http://localhost:$sonarqubePort -s|grep "window.serverStatus"|grep "UP"
        isServerUp=$?
        sleep 1
    done
    sleep 3
    mkdir .sonar .sonar/cache .scannerwork
    sudo chmod -R 777 .sonar
    sudo chmod -R 777 .scannerwork
    docker-compose -f docker-compose-sonarqube.yml start sonarqube-scanner-cli;
    docker-compose -f docker-compose-sonarqube.yml logs -f sonarqube-scanner-cli;
    firefox http://localhost:54380/dashboard?id=myapp
    echo "View Sonarqube results at http://localhost:$sonarqubePort/dashboard?id=myapp"
}

sonarcube

即使在没有任何参数的简单“Docker运行mysonarscanner”过程中也会发生这种情况。这个问题是在dockerfileach中用户定义的吗?我认为没有任何参数就无法运行它。如果您查看文档,并且希望扫描当前目录,则必须传递
-v“$PWD:/usr/src”
(对于linux)。有关更多信息,请参阅。即使在没有任何参数的简单“Docker运行mysonarscanner”过程中也会发生这种情况。这个问题是在dockerfileach中用户定义的吗?我认为没有任何参数就无法运行它。如果您查看文档,并且希望扫描当前目录,则必须传递
-v“$PWD:/usr/src”
(对于linux)。有关更多信息,请参阅。