Подключение контейнера NodeJS к базе данных MySQL - PullRequest
0 голосов
/ 11 ноября 2018

Прежде чем пометить этот пост как дублирующую заметку, которую я уже просматривал здесь, на других постах и ​​почти везде, где мог, не нашел решения для моего конкретного случая. Я просто путаюсь между docker-compose.yml версиями и связываю порты друг с другом.

Вот вопрос: Я создал два контейнера с Docker, один с сервером NodeJS, а другой с базой данных MySQL.

Мой docker-compose.yml выглядит так:

version: '3'
services:

  server:
    build: ./server/
    ports:
     - "8080:8080"
    depends_on:
      - db

  db:
    build: ./db
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_ALLOW_EMPTY_PASSWORD: 1
      MYSQL_DATABASE: dashboard_nodejs
      MYSQL_USER: root
      MYSQL_PASSWORD: password

  client:
    image: angular_app
    build: ./front/
    ports:
      - "4242:80"
    depends_on:
      - server

При запуске docker-compose up все мои приложения создаются и запускаются без проблем, пока сервер не попытается подключиться к MySQL, завершив работу с:

Error: connect ECONNREFUSED 172.20.0.2:3306 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1191:14)

dockerfile для моей базы данных содержит только

FROM mysql

COPY init_db.sql /docker-entrypoint-initdb.d/

и init_db.sql в настоящее время

CREATE DATABASE IF NOT EXISTS dashboard_nodejs;

GRANT ALL PRIVILEGES ON dashboard_nodejs.*
TO 'root'@'%' IDENTIFIED BY 'password'
WITH GRANT OPTION;

Наконец, мой сервер пытается установить соединение со следующими параметрами:

var con = mySql.createConnection({
    host: "db",
    user: "root",
    password: "password",
    database: "dashboard_nodejs"
});

Понятия не имею, почему MySQL отказывает в соединении даже с (как мне кажется) правильными учетными данными. Я заранее прошу прощения, если этот конкретный случай уже обсуждался.

1 Ответ

0 голосов
/ 11 ноября 2018

Добавить ports: "3306:3306" к службе БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...