I m trying to connect my node.js app with a mysql database This is my dockerfile
FROM node:latest
WORKDIR /app
COPY . /app
RUN npm update
RUN npm install
RUN npm rebuild bcrypt
ENV SERVER_PORT 3000
EXPOSE $SERVER_PORT
CMD ["npm", "start"]
这是我的cker弄手套。
services:
mysqldb:
image: mysql:8.0
container_name: mysqlcontainer
command: --default-authentication-plugin=mysql_native_password
restart: unless-stopped
volumes:
- ./dbinit/init.sql:/docker-entrypoint-initdb.d/0_init.sql
- $HOME/database:/var/lib/mysql
ports:
- 3306:3306
expose:
- 3306
environment:
MYSQL_DATABASE: hotel_managment
MYSQL_USER: admin
MYSQL_PASSWORD: letmein
MYSQL_ROOT_PASSWORD: letmein
SERVICE_TAGS: prod
SERVICE_NAM: mysqldb
networks:
- internalnet
nodeapp:
container_name: nodeappcontainer
build: .
image: nodeapp:v1
ports:
- 3000:3000
expose:
- 3000
depends_on:
- mysqldb
environment:
DB_HOST: mysqldb
DB_USER : root
DB_PASSWORD: letmein
DB_NAME : hotel_managment
DB_PORT : 3306
DB_CONNECTION_LIMIT : 10
SERVER_PORT : 3000
SERVICE_TAGS: prod
SERVICE_NAME: nodeappservice
networks:
- internalnet
networks:
internalnet:
driver: bridge
这是我的项目。
这是我的手脚。
DB_HOST = localhost
DB_USER = root
DB_PASSWORD = letmein
DB_NAME = hotel_managment
DB_PORT = 3306
DB_CONNECTION_LIMIT = 10
SERVER_PORT = 5000
而这正是在以下地点与数据库连接一米:js
let connection = mysql.createConnection({
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
});
I m run run command comp comp comp comp
ANd I m getting this error : `> [email protected] start
node -r dotenv/config app.js server is listening on port: 3000 [email protected] start node -r dotenv/config app.js server is listening on port: 3000 Error connecting to database: Error: connect ECONNREFUSED 172.22.0.2:3306 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) { errno: -111, code: ECONNREFUSED , syscall: connect , address: 172.22.0.2 , port: 3306, fatal: true }`
I tried everything and nothing worked