【问题标题】:Install Node.Js in a Sonarqube instance on the docker-compose在 docker-compose 上的 Sonarqube 实例中安装 Node.Js
【发布时间】:2020-03-15 22:38:01
【问题描述】:

所以我正在尝试通过docker-compose 在 docker 上启动 SonarQube。这是我的.yml 文件:

version: "3"


services:
  sonarqube:
    image: sonarqube
    ports:
     - "9000:9000"
     - "5432:5432"
    links:
      - db:db
    environment:
     - SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
     - SONARQUBE_JDBC_USERNAME=postgres
     - SONARQUBE_JDBC_PASSWORD=sonar
    volumes:
     - ..../Work/tools/_SonarQube_home/conf:/opt/sonarqube/conf
#     - sonarqube_data:/opt/sonarqube_new/data
     - ...../Work/tools/_SonarQube_home/data:/opt/sonarqube/data
     - ....../Work/tools/_SonarQube_home/extensions:/opt/sonarqube/extensions
     - ..../Work/tools/_SonarQube_home/bundled-plugins:/opt/sonarqube/lib/bundled-plugins

  db:
    image: postgres
    environment:
     - POSTGRES_USER=postgres
     - POSTGRES_PASSWORD=sonar
     - POSTGRES_DB=sonar
    volumes:
     - .../Work/tools/_PostgreSQL_data:/var/lib/postgresql
     # This needs explicit mapping due to https://github.com/docker-library/postgres/blob/4e48e3228a30763913ece952c611e5e9b95c8759/Dockerfile.template#L52
     - ..../Work/tools/_PostgreSQL_data/data:/var/lib/postgresql/data

一切都启动并正常工作。然后我正在对项目进行分析并收到此错误:

INFO: Sensor JavaScript analysis [javascript]
ERROR: Failed to parse Node.js version, got 'Couldn't find the Node.js binary. Ensure you have Node.js installed.

如果这是常规安装,我只会添加 NodeJ,但它是 docker。

我应该如何解决这个问题? 谢谢!

【问题讨论】:

  • 我喜欢阅读this 文章...

标签: node.js docker-compose sonarqube


【解决方案1】:

除非有安装了 NodeJS 的 SonarQube 的预构建图像,否则您可以制作自己的自定义图像。它看起来像下面这样:

./app/Dockerfile

FROM sonarqube

USER root
RUN apt-get update && apt-get install nodejs npm -y
USER sonarqube
version: "3"


services:
  sonarqube:
    build: ./app
    ports:
     - "9000:9000"
     - "5432:5432"
    links:
      - db:db
    environment:
     - SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
     - SONARQUBE_JDBC_USERNAME=postgres
     - SONARQUBE_JDBC_PASSWORD=sonar
    volumes:
     - ..../Work/tools/_SonarQube_home/conf:/opt/sonarqube/conf
#     - sonarqube_data:/opt/sonarqube_new/data
     - ...../Work/tools/_SonarQube_home/data:/opt/sonarqube/data
     - ....../Work/tools/_SonarQube_home/extensions:/opt/sonarqube/extensions
     - ..../Work/tools/_SonarQube_home/bundled-plugins:/opt/sonarqube/lib/bundled-plugins

  db:
    image: postgres
    environment:
     - POSTGRES_USER=postgres
     - POSTGRES_PASSWORD=sonar
     - POSTGRES_DB=sonar
    volumes:
     - .../Work/tools/_PostgreSQL_data:/var/lib/postgresql
     # This needs explicit mapping due to https://github.com/docker-library/postgres/blob/4e48e3228a30763913ece952c611e5e9b95c8759/Dockerfile.template#L52
     - ..../Work/tools/_PostgreSQL_data/data:/var/lib/postgresql/data

然后您可以构建并启动新映像:

docker-compose build
docker-compose up -d

测试是否安装了节点:

docker-compose exec sonarqube node -v
docker-compose exec sonarqube npm -v

【讨论】:

  • 这非常有用。谢谢!
【解决方案2】:

感谢大家的回答,尤其是 @leeman24,这是如何处理 docker 图像的绝妙见解。

虽然真正的解决方案是在我的机器上安装 NodeJS,而不是在扫描仪服务器机器上。换句话说,服务器开箱即用。

【讨论】:

    猜你喜欢
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 2022-07-09
    • 2019-07-21
    • 1970-01-01
    相关资源
    最近更新 更多