nginx 无法从AKS中的env读取Angular应用程序的值

tpgth1q7  于 2023-08-03  发布在  Nginx
关注(0)|答案(1)|浏览(116)

在我们的angular应用程序中,我们使用i18 n。我们想在Kubernetes中部署应用程序。现在,因为我们想构建一次并部署到多个环境。对于配置,我遵循这个link。我创建了env.js和env.template.js。如果我浏览https://domain,它会从根目录的配置中选择,因为我把它保存在assets文件夹中。但是一旦其被加载,应用将被自动路由到https://domain/en/。从这里开始,应用程序不会从配置中选择,因为它在路径/en中有自己的资产文件夹。我在想,我是否必须替换每个区域设置上的资产,或者有没有一种方法可以更新nginx conf文件,这将有所帮助?这里是docker文件。

FROM node:18-alpine AS build
WORKDIR /app
<Build Steps>

FROM nginx:alpine
COPY nginx.conf /etc/nginx/nginx.conf
# remove default conf
RUN rm /etc/nginx/conf.d/default.conf

COPY --from=build /app/dist/<app>/ /usr/share/nginx/html
# doing this, because at the time of loading we dont have the assets 
COPY --from=build /app/dist/<app>/en/assets/ /usr/share/nginx/html/assets
RUN rm /usr/share/nginx/html/assets/env.js
EXPOSE 80

CMD ["/bin/sh",  "-c",  "envsubst < /usr/share/nginx/html/assets/env.template.js > /usr/share/nginx/html/assets/env.js && exec nginx -g 'daemon off;'"]

字符串

niwlg2el

niwlg2el1#

我可以通过在docker中引入一个可执行文件来修复它。这是更新的docker和sh文件。
entry.sh

#!/bin/sh  This will changes based on the image, I am using alpine
set -eu
envsubst < /usr/share/nginx/html/assets/env.template.js > /usr/share/nginx/html/en/assets/env.js
envsubst < /usr/share/nginx/html/assets/env.template.js > /usr/share/nginx/html/es-US/assets/env.js
exec "$@"

字符串
Docker

ENTRYPOINT ["/entry.sh"]

相关问题