You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

从CircleCI向Docker Hub推送镜像失败,寻求技术协助

解决CircleCI推送Docker Hub镜像失败的问题

从你的错误信息和配置来看,有两个核心问题导致了deploy步骤失败,我来一步步帮你解决:

1. Docker Login命令格式错误(直接触发EOF退出)

你的docker login命令写法存在两个问题:

docker login -e $DOCKER_HUB_EMAIL -u $DOCKER_HUB_USER_ID $DOCKER_HUB_PWD
  • --email参数已被弃用:正如错误提示所说,该参数会在17.06版本彻底移除,现在Docker Hub登录已经不需要邮箱参数了。
  • 密码传递方式错误:你把密码直接放在命令末尾,Docker会将其识别为「要登录的仓库地址」,而非密码。这会导致Docker进入交互式密码输入状态,但CircleCI环境是非交互式的,没有输入就会触发EOF错误,最终以退出码1终止。

正确的登录命令写法

推荐使用更安全的--password-stdin方式(避免密码暴露在命令行历史中):

echo "$DOCKER_HUB_PWD" | docker login -u $DOCKER_HUB_USER_ID --password-stdin

如果需要兼容旧版本Docker,也可以用-p参数直接传递密码(安全性稍弱):

docker login -u $DOCKER_HUB_USER_ID -p $DOCKER_HUB_PWD

2. CircleCI Config语法错误

你的config.yml里,最后一个步骤写的是- deploy:,但CircleCI没有deploy这个内置步骤类型,所有自定义命令都需要用- run:来定义。这个语法错误会导致CircleCI无法正确识别你的部署命令。

修正后的完整Config.yml

修复上述两个问题后,你的配置应该如下:

version: 2
jobs:
  build:
    working_directory: /dockerapp
    docker:
      - image: docker:17.05.0-ce-git
    steps:
      - checkout
      - setup_remote_docker
      - run:
          name: Install dependencies
          command: |
            apk add --no-cache py-pip=9.0.0-r1
            pip install docker-compose==1.15.0
      - run:
          name: Run tests
          command: |
            docker-compose up -d
            docker-compose run dockerapp python test.py
      - run:  # 将deploy改为合法的run步骤
          name: Publish application to docker hub
          command: |
            # 修正后的登录命令
            echo "$DOCKER_HUB_PWD" | docker login -u $DOCKER_HUB_USER_ID --password-stdin
            docker tag dockerapp_dockerapp $DOCKER_HUB_USER_ID/dockerapp:$CIRCLE_SHA1
            docker tag dockerapp_dockerapp $DOCKER_HUB_USER_ID/dockerapp:latest
            docker push $DOCKER_HUB_USER_ID/dockerapp:$CIRCLE_SHA1
            docker push $DOCKER_HUB_USER_ID/dockerapp:latest

额外检查项

  • 确认你在CircleCI项目的「环境变量」设置中,已正确配置DOCKER_HUB_USER_IDDOCKER_HUB_PWD,无拼写错误且密码有效。
  • 若想彻底消除弃用提示,可以考虑升级Docker镜像版本(比如docker:20.10.24-git),不过这不是必须的,命令修正后即可正常运行。

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

火山引擎 最新活动