Как исправить ошибку 'ECONNREFUSED' в моем приложении nodejs с помощью Docker? - PullRequest
0 голосов
/ 08 апреля 2019

Я использую контейнер Docker для моего приложения узла, которое является сервером REST API.Он использует несколько бэкэндов (в настоящее время mongoDB и mysql).Мой mongoclient подключается к порту, определенному в моем docker-compose.yml, но мой mysql не настраивается на него, выдавая ошибку ECONNREFUSED.Также я хотел бы добавить, что на моем локальном хосте у меня установлены как mongodb, так и mysql.Ниже приведен код моих Dockerfile и docker-compose.yml

FROM node:8
RUN mkdir -p /home/sharad/eapp
WORKDIR /home/sharad/eapp
COPY package.json /home/sharad/eapp/
RUN npm install
COPY . /home/sharad/eapp
EXPOSE 8016
CMD [ "npm","start" ]
version: '3.1'

services:
  server:
    image: sharadm20/eyantra-app
    restart: always

    ports:
      - 8016:8016

  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: secret

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    links:
      - mongo  
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: secret
      ME_CONFIG_MONGODB_ENABLE_ADMIN: 'true'
  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    ports:
        - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: secret

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

. Ниже приведена ошибка, с которой я сталкиваюсь:

Unable to connect to the mysql database: { SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:3306 } 

1 Ответ

0 голосов
/ 08 апреля 2019

Это сработало, изменив имя хоста в конфигурации mysql на имя, подобное имени образа докера (в моем случае mysql называется db), поэтому имя хоста + порт будет выглядеть как db: 3306.

Благодаря МаркуШанс для указания на это.

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