1
文件結構:無法連接到數據庫:錯誤的getaddrinfo ENOTFOUND DB DB:3306
APP
├─ API
│ └─ Dockerfile.yml
├─ db
│ └─ storage
└─ docker-compose.yml
如果我沒有數據庫尚未:
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()
我沒有得到任何錯誤,所以問題是我無法連接。任何幫助表示讚賞,因爲這已採取所有的時間來調試和感謝
編輯:
我做了一個簡單的文件夾OriginalScenario
與APP->db->storage
夫婦空表之下,但我有同樣的問題;所以我覺得docker-compose up
可能會爲我創建它。