我的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 Web服务器如下:
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;
}
}
答案 0 :(得分:0)
在不同的容器上运行nginx和next.js。