【问题标题】:Dockerized NodeJS choose a script on npm runDockerized NodeJS 在 npm run 上选择一个脚本
【发布时间】:2021-01-29 16:15:29
【问题描述】:

我需要对一个使用 webpack 的 nodejs 应用程序进行 dockerize。我在下面有这个脚本:

"scripts": {
    "start": "cross-env NODE_ENV=development webpack-dev-server --open webpack --env.envConfig=hello --config configs/webpack.dev.js ",
    "build-dev": "cross-env NODE_ENV=development webpack --env.project=rm --env.envConfig=hello --env.publicPath=/ --config configs/webpack.dev.js",
    "build": "cross-env NODE_ENV=production webpack --env.project=rm --env.envConfig=hello --env.publicPath=/ --config configs/webpack.prod.js",
  },

这是我的 docker 代码 sn-p

FROM node:10-alpine as builder

# copy the package.json to install dependencies
COPY . /build

WORKDIR /build

# Install the dependencies and make the folder
RUN npm install && npm run build

但是,每当我执行docker run 时,我想在npm run buildnpm run build-dev 之间进行选择。可能吗?如果没有,我可以在 docker run 上传递 webpack 选项吗?

【问题讨论】:

  • 不,您不能在它们之间进行选择。图像是使用这些命令构建的。但是您可以做的是稍后创建运行命令,然后再创建另一个命令。有时它被用作构建层和代码执行。有时一个层来运行测试等等。
  • 您可以在构建 docker 映像后运行任何命令...但文件只会在该容器存在时存在。 docker run npm builddocker run npm build-dev。也许您想选择要构建的图像?而不是构建镜像后运行什么命令。

标签: node.js docker webpack


【解决方案1】:

容器镜像可以通过build argument使用--build-arg选择性地构建

FROM node:10-alpine as builder

# copy the package.json to install dependencies
COPY . /build

WORKDIR /build

ARG BUILD_TYPE build

# Install the dependencies and make the folder
RUN set -uex; \
    npm install; \
    npm run $BUILD_TYPE
$ docker build --build-arg BUILD_TYPE=build-dev --tag me/app:build-dev .
$ docker build --tag me/app .

【讨论】:

    【解决方案2】:

    不,您不能在它们之间进行选择。图像是使用这些命令构建的。但你可以做的是创建运行不同命令的层。

    有时它用作构建层,有时用作运行测试的层等等。

    这是一个多层构建的示例:

    https://github.com/BretFisher/docker-mastery-for-nodejs/blob/master/multi-stage-test/Dockerfile

    您可以使用 docker-compose 运行特定层:

    version: "3.7"
    
    
    services:
    
      my-service:
        build:
          dockerfile: ./Dockerfile
          target: dev
        image: my-service
    
    

    您可以将目标更改为您要运行的层

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-27
      • 1970-01-01
      • 2020-03-02
      • 2021-07-04
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多