【问题标题】:NodeJS, Webpack and Dockerfile in different environments不同环境下的NodeJS、Webpack和Dockerfile
【发布时间】:2020-04-06 06:28:31
【问题描述】:

我明白,作为一种好的做法,我不应该在 Dockerfile 中传递环境变量。但是我在 Dockerfile 中传递/使用 NODE_ENV 变量,因为我使用 Webpack 在每个环境中构建 url。

# build environment
FROM node:12.10.0-alpine as build
ARG NODE_ENV
RUN apk add --update \
    python \
    python-dev \
    py-pip \
    build-base \
    git \
    openssh-client \
  && pip install virtualenv \
  && rm -rf /var/cache/apk/*
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
ENV NODE_ENV=${NODE_ENV}
COPY package.json /app/package.json
RUN npm install
COPY . /app
RUN npm run build

# deploy environment
FROM nginx:1.17.3-alpine
ARG PORT
ENV PORT=${PORT:-9002}
EXPOSE $PORT
COPY --from=build /app/public /usr/share/nginx/html
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx/nginx.conf /etc/nginx/conf.d
CMD ["nginx", "-g", "daemon off;"]

我在package.json 中尝试遵循的其他良好做法是不在一般依赖项中添加开发依赖项。

我面临的问题是,当我尝试构建docker镜像时,我没有所需的依赖项,否则我会将devDependencies放在dependencies中。

【问题讨论】:

    标签: node.js docker webpack


    【解决方案1】:

    设置NODE_ENV=production 将阻止devDependencies 安装。 More Info

    你可以修改 npm install 命令来安装 devDependencies:

    npm --production=false install
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 1970-01-01
      相关资源
      最近更新 更多