【发布时间】:2022-01-28 22:02:05
【问题描述】:
我正在尝试在 Docker 中构建我的 Angular 网站,这也可以,但是每当网站发出请求时,URL 就会从 http://url_to_api 更改为 http://localhost:8080/url_to_api。
我对 NGINX 和 docker 非常陌生,尝试了许多不同的配置,但都没有成功。
我在浏览器中也收到错误:
Failed to load resource: net::ERR_CONNECTION_REFUSED /assets/js/env.js
nginx 会阻止它吗?
这是我的基本 nginx.conf
server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
}
这里是 docker 文件
#stage 1
FROM node:12-alpine as build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build --prod
#stage 2
FROM nginx:alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build /app/dist/webapp /usr/share/nginx/html
EXPOSE 80
#To provide environment variables in angular
CMD ["/bin/sh", "-c", "envsubst < /usr/share/nginx/html/assets/js/env.template.js > /usr/share/nginx/html/assets/js/env.js && exec nginx -g 'daemon off;'"]
【问题讨论】:
-
您的网站是否只有静态页面?只有这样 nginx 才能正常工作。
-
不,它也有动态页面。我应该改用什么?
-
使用我回答的以下 dockerfile 并创建您的图像。从节点提供页面将处理动态页面,就像您在本地机器上运行一样。还要查看网址以了解分步方法
-
感谢您的回答,但您的配置仅构建了一个不应用于生产的基本服务器,而这正是我所需要的。
-
很高兴它有帮助,是的,dockerFile 非常基础,可以托管动态页面并解决您面临的问题。如果对您有用,请接受答案。