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容器的名称。

相关推荐
big tail3 分钟前
Windows本地Docker模拟前端项目发版
前端·windows·docker
点正17 分钟前
全栈工程师:运维篇(二):docker-compose 理解
docker
芥子沫28 分钟前
Linux下编程有什么优势?
linux·运维·服务器
技术小甜甜33 分钟前
[AI] 从文档问答到流程自动化:Dify 最近为什么总出现在 AI 落地讨论里?
运维·人工智能·自动化·工作流·dify
hjxu201641 分钟前
简记Cursor远程连接Docker
docker·cursor
D愿你归来仍是少年1 小时前
Docker 基础入门指南
docker·容器
REDcker1 小时前
Linux systemd发展演进与实战指南
linux·运维·服务器
白太岁1 小时前
Linux 进程调度模块
linux·运维·服务器
BioRunYiXue1 小时前
甘油不够了,能用植物油保存菌种吗?
java·linux·运维·服务器·网络·人工智能·eclipse
羸弱的穷酸书生2 小时前
跟AI学一手之运维Agent
运维·人工智能·agent