Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在docker内部的静态站点中使用环境变量?_Docker_Webpack - Fatal编程技术网

如何在docker内部的静态站点中使用环境变量?

如何在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

我有一个react应用程序,它是用我想在docker容器中部署的webpack构建的。我目前正在使用DefinePlugin在构建阶段将应用程序的api url以及其他一些环境变量传递到应用程序中。我的网页包配置的相关部分如下所示:

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烘焙到图像中,那么通常静态内容的标准策略是使用多级构建。这将生成静态内容,然后将其复制到新的基本映像,从而保留生成所需的任何依赖项