Задать вопрос
@amenov
Full-stack developer

Docker Nodejs ERROR: connect ECONNREFUSED 127.0.0.1:3306, как подключится к MySQL?

Здравствуйте!
Разрабатываю сайт на nodejs + express + sequelize-cli
Появилась задача для разработки все разворачивать через докер.
Нужно при старте запускать mysql, adminer, backend

Файл docker-compose.yml:

version: '3'

services:
  backend:
    build: ./backend
    ports:
      - 5000:5000

  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_DATABASE: database_development
      MYSQL_ROOT_PASSWORD: password_development

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080


Dockerfile (backend):

FROM node:latest

COPY . /app

WORKDIR /app

RUN npm install
RUN npx sequelize db:migrate
RUN npx sequelize db:seed:all

EXPOSE 5000

VOLUME .:/app

CMD npm run dev


После запуска команды: docker-composer up

Появляется такая ошибка:

Step 5/9 : RUN npx sequelize db:migrate
 ---> Running in 08fd366ceb86

Sequelize CLI [Node: 15.5.0, CLI: 6.2.0, ORM: 6.3.5]

Loaded configuration file "database/config.json".
Using environment "development".

ERROR: connect ECONNREFUSED 127.0.0.1:3306

npm ERR! code 1
npm ERR! path /app
npm ERR! command failed
npm ERR! command sh -c sequelize db:migrate

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-12-28T07_22_31_094Z-debug.log
ERROR: Service 'backend' failed to build : The command '/bin/sh -c npx sequelize db:migrate' returned a non-zero code: 1


Как я понимаю не подключается к БД. В интернете советовали юзать depends_on, после применения depends_on поменялся просто порядок сборки, а ошибка осталась... Подскажите как исправить. Спасибо!
  • Вопрос задан
  • 3585 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@q2digger
никого не трогаю, починяю примус
читайте как устроена сеть в докере.
подключаться надо не к 127.0.0.1:3306 , а к db:3306
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы