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

相关推荐
木雷坞12 分钟前
自托管 n8n:Docker Compose、Webhook 和升级备份排查
运维·容器
SilentSamsara15 分钟前
高并发 API 压测与调优:locust + 火焰图 + 瓶颈定位
开发语言·python·青少年编程·docker·中间件
少威shaowei19 分钟前
在 Mac 上搭建 DNS 服务器
运维·服务器·macos
kong@react22 分钟前
milvus(向量数据库)docker容器(升级1.0)
数据库·docker·milvus
开发者联盟league24 分钟前
docker登录失败解决方法。http: server gave HTTP response to HTTPS client
http·docker·https
quqi9926 分钟前
为什么电脑不亮灯(by quqi99)
docker·samba
qq_4523962326 分钟前
第十八篇:《Docker 监控与性能优化》
docker·容器·性能优化
utf8mb4安全女神33 分钟前
shell脚本
linux·运维·服务器
网络与设备以及操作系统学习使用者38 分钟前
多路由设备静态路由配置详解
运维·网络·学习·华为·智能路由器
openFuyao1 小时前
AI Native基础设施的目标形态和它存在的一些挑战有哪些?K8s驱动异构算力面临挑战,下一代的K8s是渐进式优化,还是革命式的驱动AI的发展
人工智能·容器·kubernetes