从命令行登录到Heroku Docker注册表

时间:2020-10-29 09:22:41

标签: docker heroku

我正在尝试登录registory.heroku.com,以便可以推送自己的图像,但是认证时遇到问题。如果我遵循guidance from the docs,我会得到:

> docker login --username=_ --password=(heroku auth:token) registry.heroku.com                                                          2077ms  Thu 29 Oct 09:15:57 2020
 ›   Warning: token will expire 05/07/2021
 ›   Use heroku authorizations:create to generate a long-term token
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded

因此,它希望我使用长期令牌。如果我使用heroku authorization:create生成一个,并使用生成的令牌作为密码,那么登录将被拒绝:

) docker login --username=_ --password="this is a token" registry.heroku.com                                       1140ms  Thu 29 Oct 09:21:23 2020
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: login attempt to https://registry.heroku.com/v2/ failed with status: 401 Unauthorized

我是否需要在长期令牌上设置作用域才能使其正常工作?我想使用长期令牌,因为该进程将在CI上运行,并且希望通过环境变量进行配置。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,结果我使用的是令牌的 id 而不是实际的令牌,使用 heroku authorizations:info <token_id> 来获取令牌。

答案 1 :(得分:-1)

第一个很好。您的登录成功。 第二个密码/令牌错误。

将您的docker login更改为类似命令

echo $(DOCKER_PASSWORD) | docker login --username $(DOCKER_USERNAME) --password-stdin registry.heroku.com

可能不是echo $(DOCKER_PASSWORD)而不是heroku auth:token,但我没有尝试过,所以不能保证它能正常工作。