如何在docker内部的静态站点中使用环境变量?
我有一个react应用程序,它是用我想在docker容器中部署的webpack构建的。我目前正在使用DefinePlugin在构建阶段将应用程序的api url以及其他一些环境变量传递到应用程序中。我的网页包配置的相关部分如下所示:如何在docker内部的静态站点中使用环境变量?,docker,webpack,Docker,Webpack,我有一个react应用程序,它是用我想在docker容器中部署的webpack构建的。我目前正在使用DefinePlugin在构建阶段将应用程序的api url以及其他一些环境变量传递到应用程序中。我的网页包配置的相关部分如下所示: plugins: [ new DefinePlugin({ GRAPHQL_API_URL: JSON.stringify(process.env.GRAPHQL_API_URL), DEBUG: process.env.DE
plugins: [
new DefinePlugin({
GRAPHQL_API_URL: JSON.stringify(process.env.GRAPHQL_API_URL),
DEBUG: process.env.DEBUG,
...
}),
...
]
由于此策略在构建时需要环境变量,因此我的docker文件有点令人讨厌,因为我需要将webpack构建调用作为CMD命令的一部分:
FROM node:10.16.0-alpine
WORKDIR /usr/app/
COPY . ./
RUN npm install
# EXPOSE and serve -l ports should match
EXPOSE 3000
CMD npm run build && npm run serve -- -l 3000
我希望webpack中的构建步骤是docker容器中的一个层(一个RUN命令),这样我就可以在构建成功后清除所有源文件,从而加快启动速度。当您只提供静态文件时,是否有一个标准策略来处理使用docker环境中的信息的问题
如何在docker内部的静态站点中使用环境变量
我认为这个问题比你的具体问题更广泛。一般的答案是,你不能,因为内容是静态的。如果您需要API URL在运行时是动态的和可修改的,那么需要一些功能来支持这一点。我对webpack不太熟悉,不知道这是否可行,但下面的链接中有很多信息可能会对您有所帮助
当您只提供静态文件时,是否有一个标准策略来处理使用docker环境中的信息的问题
如果您乐于将API URL烘焙到图像中,那么通常静态内容的标准策略是使用多级构建。这将生成静态内容,然后将其复制到新的基本映像,从而保留生成所需的任何依赖项