You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

容器处于EXIT 2状态,疑与Dockerfile相关,求排查调试建议

容器Exit 2状态的调试排查建议

以下是针对该问题的具体排查步骤:

  • 查看容器启动日志
    直接获取容器的错误输出是最快速定位问题的方式,执行命令:

    docker-compose logs redisapi
    # 或者
    docker logs redisapi
    

    Exit 2通常是程序启动失败的退出码,日志里会包含具体的错误信息(比如Redis连接失败、配置错误、依赖缺失等)。

  • 检查Go程序的Redis连接配置
    你的Redis服务设置了密码mypassword,且在Docker Compose的内部网络中,服务名为redis。需要确认Go代码中Redis客户端的初始化是否正确:

    // 示例正确配置(参考storage_service.go中的初始化逻辑)
    client := redis.NewClient(&redis.Options{
        Addr:     "redis:6379",  // 必须用Docker内部服务名,不能用localhost
        Password: "mypassword",  // 与docker-compose.yml中的密码一致
        DB:       0,
    })
    

    如果代码中使用localhost:6379或者未配置密码,会直接导致连接失败,程序退出。

  • 调整容器启动顺序
    当前Go服务没有依赖Redis的启动状态,可能出现Go服务启动时Redis还未完全就绪的情况。修改docker-compose.yml添加依赖和健康检查:

    version: "3.8"
    services:
      redis:
        container_name: "redis"
        image: redis:alpine
        command: redis-server /usr/local/etc/redis/redis.conf --requirepass mypassword
        ports: 
          - "6379:6379"
        volumes: 
          - $PWD/redis.conf:/usr/local/etc/redis/redis.conf
        # 添加Redis健康检查
        healthcheck:
          test: ["CMD", "redis-cli", "-a", "mypassword", "ping"]
          interval: 5s
          timeout: 3s
          retries: 3
    
      go:
        container_name: "redisapi"
        build:
          context: .
        ports:
          - "8080:8080"
        # 等待Redis健康后再启动
        depends_on:
          redis:
            condition: service_healthy
    
  • 验证二进制文件的可执行性
    进入容器交互式环境,直接测试二进制文件的运行情况:

    docker-compose run --rm go sh
    # 在容器内执行
    ls -l main  # 检查是否有可执行权限(x位)
    ./main      # 直接运行,查看实时错误输出
    
  • 确认工作目录与文件路径
    Dockerfile中设置的工作目录是/go/src/github.com/urlshortener,COPY命令会将本地文件复制到该目录下。可以在容器内检查文件是否存在:

    docker-compose run --rm go ls -l /go/src/github.com/urlshortener
    
  • 检查Redis配置文件的有效性
    查看Redis容器的日志,确认自定义配置文件是否加载正常:

    docker-compose logs redis
    

    如果配置文件存在语法错误,可能导致Redis服务异常,间接影响Go服务的连接。

内容的提问来源于stack exchange,提问作者programmerbee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:01:04