我需要做的不仅仅是在 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 可以解决同样的问题。