Docker-compose в Azure - DNS не работает

Я пытаюсь развернуть файл docker-compose в Azure, мой файл compose выглядит так, как показано ниже.

version: '3'
services:
  db:
    image: mysql:latest
    restart: unless-stopped
    volumes:
      - misp-mysql:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=*****
      - MYSQL_USER=*****
      - MYSQL_PASSWORD=********
      - MYSQL_ROOT_PASSWORD=********
  web:
    image: *****
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - misp-web:/var/www/MISP
    environment:
      - MYSQL_HOST=db
      - MYSQL_DATABASE=****
      - MYSQL_USER=*****
      - MYSQL_PASSWORD=************

Когда я развертываю это в Azure, оба контейнера запускаются и запускаются, а также третий контейнер aci - dns - sidecar, который, как я полагаю, предназначен для разрешения DNS. Однако изнутри веб-контейнера мне невозможно разрешить контейнер БД.

Любое предложение?


person Steven Goossens    schedule 10.11.2020    source источник


Ответы (1)


Когда вы запускаете несколько контейнеров в веб-приложении Azure, есть только один контейнер, который вы можете открыть снаружи, а порт может быть только 80 или 443. А внутри веб-приложения контейнеры могут связываться с каждым через контейнер. имя и порт, который он выставил. Что касается вас, вы можете получить доступ к контейнеру БД с помощью db:port из веб-контейнера, и я рекомендую вам экспортировать порт, который БД необходимо использовать в первую очередь.

person Charles Xu    schedule 10.11.2020
comment
Привет, я использую не веб-приложение Azure для этого, а обычную настройку контейнера. Всякий раз, когда я пытаюсь установить соединение с базой данных, я получаю следующую ошибку: ERROR 2005 (HY000): Unknown MySQL server host 'db' (2), которая предполагает, что он не может найти db. Также попытки вручную разрешить имя хоста терпят неудачу. - person Steven Goossens; 10.11.2020
comment
@StevenGoossens Какой услугой вы пользуетесь? Вы должны установить переменные среды для подключения к базе данных. - person Charles Xu; 11.11.2020
comment
Привет, я в курсе, я только что отредактировал их из исходного сообщения. Я отредактировал его сейчас, но проблема остается в том, что я не могу подключиться к серверу базы данных, когда использую «db» в качестве имени хоста. Если я использую случайно сгенерированное имя хоста контейнера, соединение работает. Когда я развертываю тот же файл docker-compose на обычном компьютере с установленным docker, он работает, поэтому я по-прежнему считаю, что проблема связана с тем, как Azure переводит docker-compose. - person Steven Goossens; 11.11.2020
comment
@StevenGoossens Вы можете взглянуть на пример для docker-compose в веб-приложении Azure здесь. Он устанавливает зависимые_on и переменные среды для db. Может быть, depdens_on имеет для вас смысл. - person Charles Xu; 17.11.2020