CircleCI-Docker登录和私有环境变量

CircleCI-Docker登录和私有环境变量,docker,continuous-integration,docker-compose,circleci,Docker,Continuous Integration,Docker Compose,Circleci,我正在配置CircleCI,以自动构建并上传到Docker Hub我参与的开源库的多个容器 除了我尝试使用CLI登录docker时,一切正常。 我认为我的构建很难访问私有环境变量,但是我尝试了一切来修复它 我的配置文件如下所示: version: 2 jobs: build: working_directory: ~/build docker: - image: docker:git steps: - checkout - setu

我正在配置CircleCI,以自动构建并上传到Docker Hub我参与的开源库的多个容器

除了我尝试使用CLI登录docker时,一切正常。 我认为我的构建很难访问私有环境变量,但是我尝试了一切来修复它

我的配置文件如下所示:

version: 2
jobs:
  build:
    working_directory: ~/build
    docker:
      - image: docker:git
    steps:
      - checkout
      - setup_remote_docker:
          reusable: true
          exclusive: true

      - run:
          name: Connect to Docker Hub
          command: |
            docker login -u ${DOCKER_USER} -p ${DOCKER_PASS}
我得到以下错误:

#!/bin/sh -eo pipefail
docker login -u $DOCKER_USER -p $DOCKER_PASS
"docker login" requires at most 1 argument.
See 'docker login --help'.

Usage:  docker login [OPTIONS] [SERVER] [flags]

Log in to a Docker registry
Exited with code 1
变量当然是定义的:

我想精确地说,这是在主项目的一个分支上运行的,我不需要在项目forks上运行它


我通常非常习惯Travis CI,这要容易得多。

您正在使用Docker的开发版本,该版本可能会更改命令


不要对图像使用
docker:git
,而是使用
docker:stable git

我找到了答案,这个容器对环境变量的定义方式非常敏感:

应使用以下命令:

docker login -u "$DOCKER_USER" -u "$DOCKER_PASS"
或者,可以使用以下各项:

echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin

首先给出密码:EOF