Нужно ли мне делать больше, чем просто добавлять переменные env в файл docker-compose, чтобы использовать их в других контейнерах? - PullRequest
1 голос
/ 23 марта 2019

Я определяю URL для моего контейнера служебного сервиса в моем docker-compose.yaml.

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)
        })
      })

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 23 марта 2019

Это не сработает, поскольку process.env.someKey недоступно в браузере. Другими словами, docker-compose не очень поможет, если вы хотите передать любую переменную env в ваше приложение. Самый простой подход - определить backendUrl в самом коде в одном месте и использовать его для выполнения вызовов API. Если вам это не нравится, в StackOverflow уже есть несколько хороших ответов / решений для этой же проблемы.

...