我想在自动构建过程中将构建的 docker 镜像推送到中央 docker hub。为此,我需要先登录,然后再进行推送。
.gitlab-ci.yml
文件的相关部分如下:
docker-deploy:
image: docker:latest
stage: deploy
before_script:
- echo $HUB_PW | docker login -u $HUB_USER --password-stdin
after_script:
- docker logout
script:
- docker push <mytag>:$CI_PIPELINE_ID
我在 Gitlab CI 中得到以下错误
$ echo $HUB_PW | docker login -u $HUB_USER --password-stdin
Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password
相关环境变量$HUB_PW
和$HUB_USER
设置正确。
我尝试在 linux bash 中做同样的事情,docker 可用,结果相同。
但是,我能够登录到 docker interactive。
docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: <myusername>
Password:
Login Succeeded
当我注销时,我得到
docker logout
Removing login credentials for https://index.docker.io/v1/
无法在自动构建中进行交互式登录。而且我不明白中心 URL 的区别,这取决于使用交互式登录和包含密码的登录。
有人知道如何让这个设置工作吗?
最佳答案
我遇到了类似的问题,因为 $USERNAME 包含 $
字符。通过在 .gitlab-ci.yml 中直接使用带转义字符的名称进行 docker 登录
示例:机器人\$我的名字
gitlab 按预期连接到 docker hub。
https://stackoverflow.com/questions/56390416/
相关文章:
java - 如何在 Reactive Spring WEBFlux(Spring 5) 中读取上传
python - 函数定义的 Pythonic 顺序是什么?
python - Jupyter 笔记本 : how to run python shell com
reactjs - 使用 react-testing-library 时让 react-datepi
javascript - 如何让外部库 intellisense 在 vscode for java
javascript - 当我在滚动功能上添加动画时,导航栏熄灭