检查 React 应用是否在 Docker 容器中运行

3

对于运行在 Node 服务器上的应用,我可以使用 is-docker 包来判断它们是否运行在 Docker 容器中。但是,这种方法无法适用于运行在浏览器中的 React 应用,因为在浏览器中无法访问 fs。那么,有没有其他方法可以让 web 应用判断自己是否运行在 Docker 容器中呢?


2
浏览器几乎从不在Docker容器中运行,因此您可以相当有把握地假设您基于浏览器的React应用程序并未在Docker容器中运行。为什么这很重要? - David Maze
如果你需要在浏览器中运行React应用程序,则只需向下传递标志,或者通过HTTP请求查询服务器。 - Daniel Conde Marin
@DavidMaze 我的问题很可能含糊不清。当然,我并没有在Docker容器中运行实际的浏览器,只是暂时使用play serve来提供应用程序。当用户浏览应用程序时,在用户的浏览器中执行的构建代码将不再轻松地访问有关其正在运行的服务器的信息。特别是当涉及到识别服务器是否已经docker化时。 - Christian Ivicevic
只是一个小改动:我的动机是我正在连接到一个 GraphQL 服务器,取决于这是否在本地进行开发,通过 localhost 还是在多容器设置中的生产环境中使用 docker-compose,我希望应用程序连接到链接服务器(通过 docker-compose),而不是纯粹的 localhost - Christian Ivicevic
1个回答

1
我注意到create-react-app支持注入环境变量process.env中,使用.env文件进行构建。因此,我创建了一个包含REACT_APP_DOCKERENV=false.env.development文件,以及一个包含REACT_APP_DOCKERENV=true.env.production文件。这些变量在分别运行yarn startyarn build时被注入。
当然,这假设我的开发构建总是在本地执行,而生产构建总是在Docker中执行,这在我的特定场景下起作用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接