首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TCPConnectWrap.afterConnect - node在docker compose中无法从mysql获取数据

TCPConnectWrap.afterConnect - node在docker compose中无法从mysql获取数据
EN

Stack Overflow用户
提问于 2019-05-28 02:26:49
回答 1查看 13.6K关注 0票数 3

我正在尝试通过dokcer-compose连接node和mysql。我可以使用工作台访问mysql,但当我尝试连接到node时,我得到了错误:

代码语言:javascript
复制
Error: connect ECONNREFUSED 127.0.0.1:3306
     at TCPConnectWrap.afterConnect [as oncomplete] (net.js: 1054: 14))

有人知道这是怎么回事吗?

docker-compose.yml

代码语言:javascript
复制
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

节点创建连接

代码语言:javascript
复制
const db: Connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'CMS',
});

export default db;

节点尝试连接

代码语言:javascript
复制
db.connect((err) => {
            if (err) {
                throw err;
            }
            console.log('Connected!');
        });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-28 02:54:04

您应该使用链接名称(默认情况下,链接服务的名称)作为要连接的主机名。有关详细信息,请参阅docker-compose.yml文档。

所以用host: 'db'代替host: 'localhost'就行了

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56330860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档