Docker-Compose Services не взаимодействует - PullRequest
0 голосов
/ 02 марта 2019

Предупреждение Docker Noob.Надеюсь, это не глупый вопрос, но я не могу понять, что происходит.Я пытаюсь создать файл docker-compose, который создает базу данных mysql с подключенным томом и приложение go webserver, которое подключается к базе данных mysql.

Вот мой файл docker-compose:

services:
  db:
    image: mysql:8.0.2
    environment: 
      MYSQL_ROOT_PASSWORD: test
      MYSQL_DATABASE: northernairport
    ports:
      - "3306:3306"
    volumes:
      - /data:/var/lib/mysql
  web:
    depends_on:
      - db
    build: .
    ports:
      - "8080:8080"

Мое приложение go не может подключиться к моей базе данных mysql, хотя я думал, что "depen_on" обеспечит это возможным.

Ошибка, которую я получаю:

panic: dial tcp 127.0.0.1:3306: getsockopt: connection refused

Может кто-нибудь сказать мне, что я здесь делаю не так?Спасибо.

Ответы [ 2 ]

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

Часть ports используется для сопоставления портов контейнера с хостом в следующем формате ports (HOST:CONTAINER).Это означает, что вы пытаетесь получить доступ к компьютеру хоста, настройте приложение web для подключения к db:3306.

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

depends_on контролирует только порядок сборки и запуска сервисов.

Ваша фактическая проблема, скорее всего, заключается в том, что вы используете неправильный адрес из вашего веб-приложения в базу данных.Я вижу, что вы не определили никаких сетей, поэтому вы используете сеть default, созданную для вашего приложения docker-compose.Это будет публиковать каждую службу по имени в DNS сети по умолчанию.

Итак, ваше веб-приложение, вероятно, должно использовать db:3306 в качестве адреса базы данных, а не localhost:3306 или 127.0.0.1:3306, как указано в сообщении об ошибке..

...