您好朋友,我在docker中出现错误,我的服务器无法连接到数据库。服务器:nodejs 数据库:mysql
泊坞窗文件
FROM node:16
WORKDIR /index
COPY package.json .
RUN npm install
EXPOSE 3000
#CMD ["npm", "start"]
CMD /wait-for-it.sh db:3306 -- npm start
COPY . .
码头工人-compose.yml
version: "3.8"
networks:
app-tier:
driver: bridge
services:
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
expose:
- "3306"
ports:
- "3306:3306"
networks:
- app-tier
environment:
MYSQL_DATABASE: bdprueba
MYSQL_ALLOW_EMPTY_PASSWORD: ok
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: admin
MYSQL_PASSWORD: bdprueba
MYSQL_ROOT_HOST: '%'
backend:
depends_on:
- db
build: .
command: bash -c 'while !</dev/tcp/db/3306; do sleep 1; done; npm start'
ports:
- "3000:3000"
networks:
- app-tier
.env
NODE_ENV=development
DB_HOST=localhost
DB_USER=admin
DB_PASSWORD=dbprueba
DB_NAME=dbprueba
DB_CONNCETION=mysql
PORT=3001
错误在于想要
localhost
用作数据库主机。使用 Docker 时,您必须使用服务的名称来定义连接。在这种情况下,而不是使用
localhost
您DB_HOST
应该使用的服务名称,即db