2017-08-16 12 views
1

ファイル構造:私はまだデータベースを持っていないは、データベースに接続できません:エラーのgetaddrinfo ENOTFOUNDデシベルデシベル:3306

APP 
├─ API 
│ └─ Dockerfile.yml 
├─ db 
│ └─ storage 
└─ docker-compose.yml 

enter image description here

Dockerfile.yml:

# Base node image 
FROM node:8.2.1 

# ON DOCKER CONTAINER 
WORKDIR /API 

# Install nodemon to monitor changes to the app. 
RUN npm install -g nodemon 

COPY package.json /API/package.json 
RUN npm install && npm ls 
RUN mv /API/node_modules /node_modules 

# Stick current directory in the container's app directory 
COPY . /API 

# Change the user to 'node' 
USER node 

# Run the command 
CMD ["node", "index.js"] 

ドッキングウィンドウ-compose.yml:

version: "3" 

services: 
    web: 
    build: ./API 
    command: nodemon --inspect=0.0.0.0:5858 
    volumes: 
     - ./API:/API 
    ports: 
     - "3000:3000" 
     - "5858:5858" 
    networks: 
     - webnet 
    db: 
    image: mysql 
    environment: 
     MYSQL_ROOT_PASSWORD: example 
    volumes: 
     - ./db/storage:/var/lib/mysql 
    ports: 
     - "3306:3306" 
    networks: 
     - webnet 
networks: 
    webnet: 

index.js:

const express = require('express'); 
const mysql = require('mysql'); 
const app = express(); 

var connection = mysql.createConnection({ 
    host  : 'db', 
    user  : 'root', 
    password : 'example', 
    database : 'OriginalScenario' 
}); 

app.listen(3000, function() { 
    console.log('Server is up and running. Listening on 127.0.0.1:3000!') 
    connection.connect(); 
}) 

私はコマンドラインからdocker-compose up --buildを実行すると、私はこれを取得:

Successfully built 29aa0ae16e2e 
Successfully tagged APP_web:latest 
Starting APP_web_1 ... 
Starting APP_db_1 ... 
Starting APP_web_1 
Starting APP_web_1 ... done 
Attaching to APP_db_1, APP_web_1 
db_1 | Initializing database 
db_1 | 2017-08-16T21:17:53.855569Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see document 
ation for more details). 
db_1 | 2017-08-16T21:17:53.860792Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting. 
db_1 | 2017-08-16T21:17:53.860935Z 0 [ERROR] Aborting 
db_1 | 
web_1 | [nodemon] 1.11.0 
web_1 | [nodemon] to restart at any time, enter `rs` 
web_1 | [nodemon] watching: *.* 
web_1 | [nodemon] starting `node --inspect=0.0.0.0:5858 routes.js` 
APP_db_1 exited with code 1 
web_1 | Debugger listening on ws://0.0.0.0:5858/96f3e80c-55af-4a4b-a9ea-217203ffbebc 
web_1 | For help see https://nodejs.org/en/docs/inspector 
web_1 | Server is up and running. Listening on 127.0.0.1:3000! 
web_1 | events.js:182 
web_1 |  throw er; // Unhandled 'error' event 
web_1 |  ^
web_1 | 
web_1 | Error: getaddrinfo ENOTFOUND db db:3306 
web_1 |  at errnoException (dns.js:50:10) 
web_1 |  at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26) 
web_1 |  -------------------- 
web_1 |  at Protocol._enqueue (/API/node_modules/mysql/lib/protocol/Protocol.js:145:48) 
web_1 |  at Protocol.handshake (/API/node_modules/mysql/lib/protocol/Protocol.js:52:23) 
web_1 |  at Connection.connect (/API/node_modules/mysql/lib/Connection.js:130:18) 
web_1 |  at Server.<anonymous> (/API/routes.js:29:14) 
web_1 |  at Object.onceWrapper (events.js:314:30) 
web_1 |  at emitNone (events.js:105:13) 
web_1 |  at Server.emit (events.js:207:7) 
web_1 |  at emitListeningNT (net.js:1346:10) 
web_1 |  at _combinedTickCallback (internal/process/next_tick.js:135:11) 
web_1 |  at process._tickCallback (internal/process/next_tick.js:180:9) 
web_1 | [nodemon] app crashed - waiting for file changes before starting... 

を削除した場合connection.connect()エラーは発生しないため、接続できないという問題があります。すべてのヘルプは、これはデバッグと感謝にすべての私の時間を割いてきたと評価されて

EDIT:

私はカップル空のテーブルとAPP->db->storageの下に簡単なOriginalScenarioフォルダを持っていたが、私は同じ問題を持っていました。だから私はそれを考えて動いたdocker-compose up私のためにそれを作成する可能性があります。

答えて

1

2つのもの。起動中にAPP->db->storageが空であることを確認してください。次に、dbサービスにMYSQL_DATABASE=OriginalScenarioを追加します。

mysqlを起動するときは、接続するノードサービスが必要なDBを用意する必要があります。

関連する問題