使用Docker时无法读取Gatsby上的env文件
我对Docker有一个问题,基本上我创建了一个.env文件,前端服务使用该文件,如下所示:使用Docker时无法读取Gatsby上的env文件,docker,environment-variables,gatsby,Docker,Environment Variables,Gatsby,我对Docker有一个问题,基本上我创建了一个.env文件,前端服务使用该文件,如下所示: frontend: container_name: begreentannery_frontend build: context: ./frontend/ args: API_URL: ${API_URL} MAILCHIMP_ENDPOINT: ${MAILCHIMP_ENDPOINT} FORM_KEY:
frontend:
container_name: begreentannery_frontend
build:
context: ./frontend/
args:
API_URL: ${API_URL}
MAILCHIMP_ENDPOINT: ${MAILCHIMP_ENDPOINT}
FORM_KEY: ${FORM_KEY}
GOOGLE_ANALYTICS_ID: ${GOOGLE_ANALYTICS_ID}
GOOGLE_TAG_MANAGER_ID: ${GOOGLE_TAG_MANAGER_ID}
FACEBOOK_PIXEL_ID: ${FACEBOOK_PIXEL_ID}
ports:
- '3001:80'
depends_on:
- backend
后端服务实际上是一个与盖茨比合作的网站。当我启动应用程序进行docker compose-up-build
时,我可以看到变量已正确地传递到gatsby config
,例如:
console.log("API_URL:",process.env.API_URL)
但是如果我试图读取组件中的同一变量,我会得到未定义的
这怎么可能?为什么我可以读取gatsby config.js
中的所有环境变量,但不能读取组件中的所有环境变量
这怎么可能?为什么我可以读取里面的所有环境变量
gatsby config.js
但不在组件中
因为有和。第一个(服务器端)仅在节点服务器中可用(gatsby config.js
,gatsby Node.js
,等等),而第二个(客户端)仅在浏览器中可用(其余组件、页面和模板)
要使环境变量对浏览器可用,您需要在其前面加上GATSBY
前缀,如文档所示:
除了在.env.*
文件,您还可以定义OS Env变量。操作系统环境变量是
前缀为GATSBY_uz
将在浏览器JavaScript中可用
嗨,谢谢你的回复。所以我必须在docker args中调用变量GATSBY_API_URL?没错。试试看。