我需要做的不仅仅是在 docker-compose 文件中添加 env 变量以便在其他容器中使用它们吗?旋转起来
Do I need to do more than add env variables in docker-compose file in order to use them across other containers?spin up
我在 docker-compose.yaml.
中为我的后端服务容器定义了 URL
environment:
PORT: 80
VUE_APP_BACKEND_URL: "mm_backend:8080"
当容器旋转起来时,我检查了我的前端容器并且可以验证环境变量是否设置正确,如下所示。
但是,当我尝试使用我的前端服务连接到我的后端(检索数据)时,它告诉我 VUE_APP_BACKEND_URL 在网络选项卡中未定义。
这个环境变量的实现和使用在我的vue.js代码中是这样的
getOwners(){
fetch(`${process.env.VUE_APP_BACKEND_URL}/owners`, defaultOptions)
.then((response) => {
return response.json();
})
.then((data) => {
data.forEach((element) => {
var entry = {
value: element.id,
text: `${element.display_name} (${element.name})`
}
this.owners.push(entry)
})
})
感谢任何帮助。
这行不通,因为 process.env.someKey
在浏览器上不可用。换句话说,如果您想将 any env 变量传递到前端应用程序,docker-compose 将无济于事。最简单的方法是在代码本身的一处定义 backendUrl 并使用它进行 api 调用。如果您不喜欢这样做,Whosebug 上已经有一些很好的 answers/solutions 可以解决同样的问题。
我在 docker-compose.yaml.
中为我的后端服务容器定义了 URLenvironment:
PORT: 80
VUE_APP_BACKEND_URL: "mm_backend:8080"
当容器旋转起来时,我检查了我的前端容器并且可以验证环境变量是否设置正确,如下所示。
但是,当我尝试使用我的前端服务连接到我的后端(检索数据)时,它告诉我 VUE_APP_BACKEND_URL 在网络选项卡中未定义。
这个环境变量的实现和使用在我的vue.js代码中是这样的
getOwners(){
fetch(`${process.env.VUE_APP_BACKEND_URL}/owners`, defaultOptions)
.then((response) => {
return response.json();
})
.then((data) => {
data.forEach((element) => {
var entry = {
value: element.id,
text: `${element.display_name} (${element.name})`
}
this.owners.push(entry)
})
})
感谢任何帮助。
这行不通,因为 process.env.someKey
在浏览器上不可用。换句话说,如果您想将 any env 变量传递到前端应用程序,docker-compose 将无济于事。最简单的方法是在代码本身的一处定义 backendUrl 并使用它进行 api 调用。如果您不喜欢这样做,Whosebug 上已经有一些很好的 answers/solutions 可以解决同样的问题。