gpt4 book ai didi

docker - nginx 代理后面的 nextjs 多阶段 docker 构建

转载 作者:行者123 更新时间:2023-12-02 18:28:34 26 4
gpt4 key购买 nike

我的 nextjs 前端应用程序有一个多阶段 docker 构建。它看起来像这样:

# Do the npm install or yarn install in the full image
FROM mhart/alpine-node AS builder
WORKDIR /app
COPY ./package.json ./
RUN npm install
COPY . .
RUN npm run build
RUN npm run export

FROM nginx
EXPOSE 3000
COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/out /usr/share/nginx/html

问题是现在我有动态路由。因此我无法运行命令 next export,它将我的应用程序构建为静态应用程序。 NextJS 明确指出并非每个应用程序都可以部署为静态应用程序。如果您的应用程序需要在运行时生成动态页面,则不能将其部署为静态应用程序。 https://nextjs.org/learn/excel/static-html-export

现在的问题是,在我的 docker 部署中,我依赖于一个条目 index.html 文件,该文件从我的 nextjs 导出文件夹复制到 nginx 中的/usr/share/nginx/html 文件夹中。有没有办法让我将 3000 从 nextjs 导出到 nginx,但不构建静态文件并仍然将其放在 nginx 后面,如果不是 index.html 文件,我需要将什么复制到 nginx?

将流量路由到客户端或服务器的 nginx 网络服务器如下:

upstream client {
server client:3000;
}

upstream api {
server api:4000;
}

server {
listen 80;

location / {
proxy_pass http://client;
}

location /sockjs-node {
proxy_pass http://client;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}

location /api {
rewrite /api/(.*) /$1 break;
proxy_pass http://api;
}
}

最佳答案

在不同的容器上运行 nginx 和 next.js。

关于docker - nginx 代理后面的 nextjs 多阶段 docker 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54910910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com