【发布时间】: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中。
【问题讨论】: