我正在尝试通过dokcer-compose连接node和mysql。我可以使用工作台访问mysql,但当我尝试连接到node时,我得到了错误:
Error: connect ECONNREFUSED 127.0.0.1:3306
at TCPConnectWrap.afterConnect [as oncomplete] (net.js: 1054: 14))有人知道这是怎么回事吗?
docker-compose.yml
version: '3'
services:
#App Service
app:
image: "node:alpine"
container_name: cms-node
restart: unless-stopped
tty: true
working_dir: /app
environment:
- NODE_ENV=production
ports:
- 1234:1234
volumes:
- ./:/app
links:
- db
depends_on:
- db
#Mysql Service
db:
image: mysql:latest
container_name: cms-mysql
restart: unless-stopped
# command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_DATABASE: CMS
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
ports:
- 3306:3306节点创建连接
const db: Connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'CMS',
});
export default db;节点尝试连接
db.connect((err) => {
if (err) {
throw err;
}
console.log('Connected!');
});发布于 2019-05-28 02:54:04
您应该使用链接名称(默认情况下,链接服务的名称)作为要连接的主机名。有关详细信息,请参阅docker-compose.yml文档。
所以用host: 'db'代替host: 'localhost'就行了
https://stackoverflow.com/questions/56330860
复制相似问题