Bookshelf.js Не подключается к правильному хосту? - PullRequest
0 голосов
/ 06 июня 2018

Я работаю над приложением express.js, которое было докеризовано.Вот информация о конфигурации, которую я предоставляю книжной полке.

{
    "database_dev" : {
        "client": "mysql",
        "connection": {
            "host": "DB",
            "database": "TERRA_DEV",
            "user": "dev",
            "port": "3306",
            "password": "goon",
            "charset": "utf8",
            "host": ""
        }
    },

    "database_test" : {
        "client": "mysql",
        "connection": {
            "host": "DB",
            "database": "TERRA_TEST",
            "user": "tester",
            "port": "3306",
            "password": "goon",
            "charset": "utf8",
            "host": ""
        }
    },
....

Вот мой docker-compose.test.yml, который я запускаю, чтобы попытаться выполнить свои тесты.

version: '2'
volumes:
services:
 sut:
     build: .
     command: npm test
     depends_on:
         - web
 web:
    build: .
    command: "npm start"
    volumes:
      - .:/usr/app/
      - /usr/app/node_modules
    ports:
      - "3000:3000"
    depends_on:
      - redis
      - DB
    networks:
        - web_sql_bridge

 redis:
    image: 'bitnami/redis:latest'
    environment:
        - ALLOW_EMPTY_PASSWORD=yes
    ports:
        - '6379:6379'
 DB:
     image: mysql:5.7
     restart: always
     environment:
         - MYSQL_ROOT_PASSWORD="goon"
         - MYSQL_DATABASE="TERRA_TEST"
         - MYSQL_DATABASE="TERRA_DEV"
         - MYSQL_USER="tester"
         - MYSQL_PASSWORD="goon"
     ports:
         - "3306:3306"
     networks:
         - web_sql_bridge
volumes:
    appconf:

networks:
  web_sql_bridge:
    driver: bridge

Вотошибка

Error: connect ECONNREFUSED 127.0.0.1:3306
sut_1    |     at Object._errnoException (util.js:1022:11)
sut_1    |     at _exceptionWithHostPort (util.js:1044:20)
sut_1    |     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1198:14)
sut_1    |     --------------------
sut_1    |     at Protocol._enqueue (/TerraServer/node_modules/mysql/lib/protocol/Protocol.js:145:48)
sut_1    |     at Protocol.handshake (/TerraServer/node_modules/mysql/lib/protocol/Protocol.js:52:23)
sut_1    |     at Connection.connect (/TerraServer/node_modules/mysql/lib/Connection.js:130:18)

В общем, как вы можете видеть сверху, у меня есть config.json с некоторой информацией о базе данных, которую я получаю в файле JS и передаю в качестве аргумента для bookshelf.js.Это используется в моих тестах мокко, где выдает ошибку, которую я опубликовал.Кажется, ошибка указывает на то, что он пытается подключиться к 127.0.0.1.Почему bookshelf.js пытается подключиться к 127.0.0.1, когда я даю ему DB?

1 Ответ

0 голосов
/ 09 июня 2018

Я нашел свою проблему.Оказывается, мне нужно было запустить.

docker system prune -a

Когда я собирался во второй раз, он не обновлял файлы, и мой конфигурационный файл был позади в образе, но не в моем репозитории, где он тянет код.

, а также удалены кавычки вокруг среды БД.

DB:
     image: mysql:5.7
     restart: always
     environment:
         - MYSQL_ROOT_PASSWORD=goon
         - MYSQL_DATABASE=TERRA_TEST
         - MYSQL_DATABASE=TERRA_DEV
         - MYSQL_USER=tester
         - MYSQL_PASSWORD=goon
...