【发布时间】:2018-05-21 03:37:09
【问题描述】:
我有一个 ReactJS 应用程序,我正在使用 Kubernetes 部署它。
我正在努力思考如何将环境变量从 Kubernetes 部署文件中注入到我的 config.js 文件中。
我目前有这些:
config.js文件:
export const CLIENT_API_ENDPOINT = {
default:process.env.URL_TO_SERVICE,
};
这是我的 Kubernetes 部署变量:
"spec": {
"containers": [
{
"name": "container_name",
"image": "image_name",
"env": [
{
"name": "URL_TO_SERVICE",
"value": "https://www.myurl.com"
}
]
有点不明白为什么我在config.js 文件中看不到环境变量。任何帮助将不胜感激。
这是我的 dockerfile:
# Dockerfile (tag: v3)
FROM node:9.3.0
RUN npm install webpack -g
WORKDIR /tmp
COPY package.json /tmp/
RUN npm config set registry http://registry.npmjs.org/ && npm install
WORKDIR /usr/src/app
COPY . /usr/src/app/
RUN cp -a /tmp/node_modules /usr/src/app/
#RUN webpack
ENV NODE_ENV=production
ENV PORT=4000
#CMD [ "/usr/local/bin/node", "./index.js" ]
ENTRYPOINT npm start
EXPOSE 4000
【问题讨论】:
-
那是客户端还是服务器端代码?如果是服务器端代码,那么你所拥有的应该可以完美运行。
-
它是客户端代码(React 应用程序),以
npm start命令开始 -
您将不得不找到一种方法将这些环境变量发送给客户端。有很多很多方法可以做到这一点,它必须作为构建过程的一部分来完成,或者您可以通过 api 公开设置。如果您使用的是 webpack(大多数反应人员都这样做),您可以使用此处描述的解决方案之一:stackoverflow.com/questions/30030031/…
-
我给出了答案,但如果你发布你的 docker 文件会有所帮助。
-
概括地说,我坚持我的回答。祝你好运!
标签: node.js reactjs webpack kubernetes