node.js - 在 docker-compose 上的 Sonarqube 实例中安装 Node.Js

标签 node.js docker-compose sonarqube

所以我尝试通过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.

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

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

最佳答案

除非有安装了 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

测试 Node 是否安装:

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

关于node.js - 在 docker-compose 上的 Sonarqube 实例中安装 Node.Js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58950485/

相关文章:

javascript - 按名称获取对象作为不带 eval 的字符串

javascript - 比较出错了,或者说,这怎么可能是假的?

c# - 访问 Memory<T> 的底层数组

docker 卷自定义挂载点

docker - 如果使用 docker 部署,为什么 MERN 应用程序无法与后端通信?

android - 使用 sonarqube gradle 插件配置带有子模块的 Android 项目的正确方法是什么?

java - Findbugs NoClassesFoundToAnalyze 异常

node.js - 如何重新启动/更新 Node Express 虚拟主机站点

node.js - Next.js:ComponentWillMount 与 getInitialProps

docker - docker-compose没有在共享卷中获取文件系统更改