我是一个对Docker有些陌生的人,正在尝试理解一些概念。
在很多教程和文章中(实际上,几乎所有的教程和文章),这是一个典型的create-react-app和nginx配置Dockerfile:
# CRA
FROM node:alpine as build-deps
WORKDIR /usr/src/app
COPY package.json package-lock.json ./
RUN npm install
COPY . ./
RUN npm run build
# Nginx
FROM nginx:1.12-alpine
COPY --from=build-deps /usr/src/app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
假设一切都按预期运行,图像将会非常大。
我有一个稍微不同的想法。在本地运行 "npm install && npm run build",然后使用以下 Dockerfile:
FROM nginx:1.12-alpine
WORKDIR /opt/app-root
COPY ./nginx/nginx.conf /etc/nginx/
COPY ./build ./src/dist/
COPY ./node_modules .
USER 1001
EXPOSE 8080
ENTRYPOINT ["nginx", "-g", "daemon off;"]
哪种方法更好?每当我运行docker build -t app-test:0.0.1 .
时,我觉得第二种方法总是更快。
node_modules
和build/
目录复制到容器镜像中,否则应用程序将无法正常工作。我有点困惑你在建议什么。 - user14697413