我想现在就部署我的项目,但是在运行docker build之后我遇到了一个问题,我使用了带有docker build的nginx服务器
在本地,react-router 运行良好,在开发中在 localhost 中运行时没有遇到任何问题,甚至在正常构建中也是如此
当我用带有 nginx 的 docker 容器服务器只对正常路线起作用,当我导航到嵌套路线时,我的组件根本没有渲染哪些组件依赖于嵌套匹配
我认为 nginx 没有识别index.html
位置对象根目录中的嵌套路由器default.conf
这里是default.conf 文件
server {
listen 3000;
root /usr/share/nginx/html;
index index.html index.htm;
location /{
try_files $uri $uri/ /index.html;
expires -1; # Set it to different value depending on your standard requirements
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
这里是Dockerfile 文件
FROM node:14-alpine as react-build
# => Build container
WORKDIR /home/node/app
ENV NODE_ENV production
#ENV NODE_OPTIONS --openssl-legacy-provider
COPY package.json /home/node/app
RUN npm install
COPY . /home/node/app
RUN npm run build
# => Run container
FROM nginx:1.15.2-alpine
ENV NODE_ENV production
# Nginx config
RUN rm -rf /etc/nginx/conf.d
COPY conf /etc/nginx
# Static build
COPY --from=react-build /home/node/app/build /usr/share/nginx/html
# Default port exposure
EXPOSE 3000
# Copy .env file and shell script to container
WORKDIR /usr/share/nginx/html
COPY ./env.sh .
COPY .env .
COPY .env.local .
# Add bash
RUN apk add --no-cache bash
# Make our shell script executable
RUN chmod +x env.sh
#Stream Editor CR LF
RUN sed -i -e 's/\r$//' /usr/share/nginx/html/env.sh
# Start Nginx server
CMD ["/bin/bash", "-c", "/usr/share/nginx/html/env.sh && nginx -g \"daemon off;\""]
我问路由器相关的问题堆栈溢出他们说,路由器的实现是否正确
“路由器实现中没有问题,似乎是服务器/处理位置根 index.html 中存在问题”
这是 stackoverflow 相关的问题https://stackoverflow.com/questions/74374786/why-nested-routesreact-router-are-not-working-with-nginix-container-docker-bui
请大家帮帮忙,我不知道 nginx 配置出了什么问题
我如何才能正确访问 index.html 根目录中的嵌套路由
提前致谢!