DNS в Dockercontainer не работает с vue. js и узлом: Ошибка: getaddrinfo ENOTFOUND db - PullRequest
0 голосов
/ 30 января 2020

Я создал приложение vue. js, которое, как я знаю, пытается докеризировать. В качестве Backend я использую node.js для вызовов API, который использует mysql в качестве базы данных. Поэтому я пытаюсь создать контейнер пользовательского интерфейса, контейнер БД, а также контейнер для nginx.

. При попытке создать их с помощью docker-compose up --build я получаю следующую ошибку.

Кто-нибудь знает, в чем здесь проблема?

$ vue-cli-service build

-  Building for production...
events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: getaddrinfo ENOTFOUND db
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:60:26)
    --------------------
    at Protocol._enqueue (/app/node_modules/mysql/lib/protocol/Protocol.js:144:48)
    at Protocol.handshake (/app/node_modules/mysql/lib/protocol/Protocol.js:51:23)
    at Connection.connect (/app/node_modules/mysql/lib/Connection.js:116:18)
    [...]
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  errno: 'ENOTFOUND',
  code: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'db',
  fatal: true
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
ERROR: Service 'ui' failed to build: The command '/bin/sh -c yarn run build' returned a non-zero code: 1

Это мой docker -compose.yml

version: '3'

networks:
  app-tier:

services:
  db:
    image: mysql:5.7
    volumes:
      - ./sql:/docker-entrypoint-initdb.d
    restart: always
    networks:
      - app-tier
    environment:
      - MYSQL_USER=user
      [...]
    ports:
      - 3306:3306

  ui:
    build: ./ui
    container_name: ui
    restart: always
    networks:
      - app-tier
    expose:
      - 80
    ports:
      - 3000:3000

  [...]

Этот .ui / Dockerfile

# build stage
FROM node:12.14.0-alpine as build-stage
[...]
# RUN yarn server
RUN yarn run build

# Production stage
FROM nginx:1.16.1-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
[...]

Это . / Ui / src / server / db. js:

const mysql = require('mysql');
const connection = mysql.createConnection({
    host: 'db',
    user: 'root',
    password: 'password',
    database: 'dbname',
    port: '3306'
});
connection.connect();
module.exports = connection;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...