Vue (NPM) + NGINX 合一 docker
Vue (NPM) + NGINX in a single docker
最近我发现许多网站提出了使用所谓的“多阶段”docker.
将 NPM 和 NGINX 封装到单个 docker 文件中的解决方案
# first stage builds vue
FROM mhart/alpine-node:12 as build-stage
WORKDIR /app
COPY . .
RUN npm ci
RUN npm run build
# second stage copies only the static dist files to nginx html dir
FROM nginx:stable-alpine as production-stage
VOLUME /var/log/nginx
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 8080
CMD ["nginx", "-g", "daemon off;"]
不过我不是很清楚。毕竟,docker 应该只托管一个进程,而在相关示例中,它运行 NPM 服务器并单独运行 NGINX - 我是否正确阅读了 Dockerfile 中的这些说明?
将其托管在 Kubernetes 或 AWS ECS 等服务上时,采取“边车”方式不是更合理吗?
当下面这行代码运行s
COPY --from=build-stage /app/dist /usr/share/nginx/html
您只是复制已编译的 JS/HTML,然后通过 nginx
托管它。所以这里没有两个进程。当你 运行 npm start
它通常 运行 一个开发服务器,你不需要 运行 用于生产构建。
最近我发现许多网站提出了使用所谓的“多阶段”docker.
将 NPM 和 NGINX 封装到单个 docker 文件中的解决方案
# first stage builds vue
FROM mhart/alpine-node:12 as build-stage
WORKDIR /app
COPY . .
RUN npm ci
RUN npm run build
# second stage copies only the static dist files to nginx html dir
FROM nginx:stable-alpine as production-stage
VOLUME /var/log/nginx
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 8080
CMD ["nginx", "-g", "daemon off;"]
不过我不是很清楚。毕竟,docker 应该只托管一个进程,而在相关示例中,它运行 NPM 服务器并单独运行 NGINX - 我是否正确阅读了 Dockerfile 中的这些说明?
将其托管在 Kubernetes 或 AWS ECS 等服务上时,采取“边车”方式不是更合理吗?
当下面这行代码运行s
COPY --from=build-stage /app/dist /usr/share/nginx/html
您只是复制已编译的 JS/HTML,然后通过 nginx
托管它。所以这里没有两个进程。当你 运行 npm start
它通常 运行 一个开发服务器,你不需要 运行 用于生产构建。