docker - 为了在其他容器中使用它们,我是否需要做更多的事情而不是在docker-compose文件中添加env变量?

标签 docker docker-compose docker-networking

我在docker-compose.yaml中定义了后端服务容器的URL。

environment:
  PORT: 80
  VUE_APP_BACKEND_URL: "mm_backend:8080"

当容器旋转时,我检查了前端容器,并可以验证是否正确设置了env变量,如下所示。

enter image description here

但是,当我尝试使用前端服务连接到后端(检索数据)时,它告诉我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,因此无法使用。换句话说,如果您想将任何env变量传递给到您的前端应用程序中,docker-compose将无济于事。最简单的方法是在代码本身中的一个位置定义backendUrl并使用它进行api调用。如果您不满意这样做,那么在StackOverflow上已经有一些针对此问题的良好答案/解决方案。

关于docker - 为了在其他容器中使用它们,我是否需要做更多的事情而不是在docker-compose文件中添加env变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55314303/

相关文章:

docker-compose 使用包含实验功能的 Dockerfile 构建

docker - 如果设置了变量,如何配置 docker compose 以使用给定的子网,或者如果未设置,则为自己选择?

docker - 我想创建 2 个具有相同 IP 范围的 docker 网络

docker - Docker Compose服务不公开端口

docker - 使用 docker-compose 构建两个不同标记的 docker 镜像

git - 在 GitLab CI 下的 Docker Compose 中从 git 构建时出现 "error initializing submodules"

docker - docker 所有文件都属于根

php - 生产环境中的 Docker 和包管理器

laravel - 有没有办法将Docker容器上设置的系统环境变量传递给Laravel-5.6应用

docker - 增加 Zipkin Docker 容器中的 Java 堆空间