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

相关推荐
白总Server5 分钟前
Golang实现分布式Masscan任务调度系统
java·运维·服务器·开发语言·分布式·后端·golang
Sca_杰11 分钟前
android过渡动画
android·运维·nginx
GLAB-Mary19 分钟前
红帽认证工程师(RHCE):掌握Linux自动化的关键
linux·运维·自动化·rhce
中云DDoS CC防护蔡蔡44 分钟前
自己的服务器被 DDOS跟CC攻击了怎么处理,如何抵御攻击?
运维·服务器·经验分享·网络安全·ddos
chian-ocean1 小时前
永不休眠:Linux 守护进程的工作原理
linux·运维·服务器
GalaxyPokemon2 小时前
LeetCode - 76. 最小覆盖子串
运维·服务器·数据结构·算法·leetcode
wearegogog1233 小时前
Docker Buildx 简介与安装指南
运维·docker·容器
wanhengidc3 小时前
造成服务器宕机的原因都有哪些?
运维·服务器·网络
打不了嗝 ᥬ᭄4 小时前
进程控制
linux·运维·服务器·c++
苏州向日葵5 小时前
virtualBox安装ubuntu,常用知识点
linux·运维·ubuntu