docker-compose 多容器报错集

1. Nest.js+Mysql 数据库连接失败

报错提示:

bash 复制代码
first-nest-first-nest-1  | [Nest] 1  - 11/10/2023, 1:57:08 AM   ERROR [ExceptionHandler] connect ECONNREFUSED 127.0.0.1:3306
first-nest-first-nest-1  | Error: connect ECONNREFUSED 127.0.0.1:3306
first-nest-first-nest-1  |     at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1595:16)
first-nest-first-nest-1 exited with code 1

docker-compose.yml配置

bash 复制代码
version: '3'
services:
  mysql:
    image: mysql:5.7
    # container_name: first-nest-mysql #自定义容器的名称
    volumes: #挂载当前的data目录到容器默认mysql存储目录
      - ./deploy/mysql/db:/var/lib/mysql
      - ./deploy/mysql/mysqld:/var/run/mysqld
    environment: #环境变量
      - MYSQL_ROOT_PASSWORD=123456 #mysql的root密码
      - MYSQL_DATABASE=love_koa_docker #mysql的初始化数据库
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    ports:
      - "3305:3306"
    #docker 重启后,容器自启动
    restart: always
    networks:
      - app-network

  first-nest:
    depends_on:
      - mysql
    build:
      context: ./
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    # restart: always
    # restart: on-failure # 设置自动重启,这一步必须设置,主要是存在mysql还没有启动完成就启动了node服务
    networks:
      - app-network
    

networks:
  app-network:
    driver: bridge

数据库连接配置

bash 复制代码
{
        type: 'mysql',
        host: 'localhost',
        port: 3306,
        username: 'root',
        password: '123456',
        database: 'love_koa_docker',
        entities: [__dirname + '/../**/*.entity{.ts,.js}'],
        synchronize: true,
        // logging: true,
      }

docker-commpose.yml的mysql将主机的3305端口映射到容器的3306端口,你可以从外部访问localhost:3307 。但是,这并不意味着集装箱正在聆听3307 ; 这个容器其实还在听3306 。 当其他容器试图访问mysql DNS时,它将被转换为内部容器IP,因此您必须连接到3306

建议将mysql的本地3306端口映射到容器3306端口。

数据库连接配置中的host也改成mysql容器的名称。

相关推荐
大锦终15 小时前
【Linux】udp网络程序
linux·运维·服务器·网络
Syntech_Wuz16 小时前
从 C 到 C++:容器适配器 std::stack 与 std::queue 详解
数据结构·c++·容器··队列
wanhengidc16 小时前
巨椰云手机引领未来
运维·服务器·网络·游戏·智能手机
wanhengidc16 小时前
云手机的真实体验感怎么样
运维·服务器·安全·游戏·智能手机
脏脏a16 小时前
【Linux】Linux工具漫谈:yum 与 vim,高效操作的 “左膀右臂”
linux·运维·服务器
Yyyy48217 小时前
容器化技术
docker
悟能不能悟17 小时前
dcpatchscan.exe这是什么
运维·服务器
wanhengidc17 小时前
云手机 流畅运行
运维·服务器·安全·游戏·智能手机
云飞云共享云桌面17 小时前
广东某模具制造工厂用一台云服务器供8个研发设计同时用
linux·运维·服务器·网络·自动化·制造
大博士.J18 小时前
手机端-adb脚本自动化-真机版
运维·智能手机·自动化