Docker容器中Webpack Encore环境变量无法正常工作的问题求助
Docker容器中Webpack Encore环境变量无法正常工作的问题求助
我之前维护着一个基于Symfony + Webpack Encore的项目,本地机器上MySQL、PHP、Mercure、Yarn/NodeJS这些依赖都配齐了,前端代码也能正常读取环境变量,整套跑起来毫无问题。
之前正常运行的核心配置
- 本地的
.env.local文件:
MERCURE_HUB_URL=https://localhost/.well-known/mercure
webpack.config.js里的环境变量注入逻辑:
Encore.configureDefinePlugin(options => { const environment = dotenv.config({ path: './.env.local', debug: false }) console.info(environment.parsed) options['process.env.MERCURE_HUB_URL'] = JSON.stringify(environment.parsed.MERCURE_HUB_URL) })
- 前端
api.js里读取变量的代码:
const hub = new URL(process.env.MERCURE_HUB_URL)
最近我打算切换到容器化部署,把Node服务放到容器里运行,用的是Symfony Docker方案。结果这一改,环境变量就彻底不好使了!
下面是我compose.yaml里关于Encore容器的配置(内容没贴全,核心结构如下):
encore: image: node:latest-alpine volumes: # 挂载本地项目目录到容器内 - ./:/app # 容器启动后运行Webpack Dev Server command: yarn dev-server
现在的情况是,容器里的Webpack Dev Server跑起来后,前端代码完全读不到MERCURE_HUB_URL这个环境变量,之前的注入逻辑完全失效了。有没有经验丰富的老哥能帮忙分析下问题出在哪,该怎么解决?
备注:内容来源于stack exchange,提问作者Stephan Vierkant
相关产品推荐
相关产品推荐

