Docker 拉取未经授权的 - Docker 和 Github 操作
Docker pulling unauthorized - Docker and Github actions
我的部署脚本如下:
- name: Log in to GitHub Packages
run: echo ${PERSONAL_ACCESS_TOKEN} | docker login ghcr.io -u ${{ secrets.NAMESPACE }} --password-stdin
env:
PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
- name: Build and deploy images on DigitalOcean
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
run: |
scp -o StrictHostKeyChecking=no -r ./.env ./docker-compose_prod.yml root@${{ secrets.DIGITAL_OCEAN_IP_ADDRESS }}:/app
ssh -o StrictHostKeyChecking=no root@${{ secrets.DIGITAL_OCEAN_IP_ADDRESS }} << 'ENDSSH'
cd /app
source .env
docker login ghcr.io -u $NAMESPACE -p $PERSONAL_ACCESS_TOKEN
docker pull $WEB_IMAGE
docker pull $NGINX_IMAGE
docker-compose -f docker-compose.prod.yml up -d
ENDSSH
我得到的错误是
Pulling web
(ghcr.io/***/testdriver_tutorial/web:ba673356fe8a9abcf25700b8a12619e414bbaf7c)... Head
https://ghcr.io/v2/***/testdriver_tutorial/web/manifests/ba673356fe8a9abcf25700b8a12619e414bbaf7c:
unauthorized
登录到GitHub Packages
步骤显示已经成功
更新
我刚刚在数字海洋水滴上做了 docker login ghcr.io -u $NAMESPACE -p $PERSONAL_ACCESS_TOKEN
,它要求输入密码。
如何关闭此密码验证,使其仅使用 PERSONAL_ACCESS_TOKEN
?
问题不在于 docker pull,问题在于 docker 登录之前执行的命令,即 source .env
run: |
scp -o StrictHostKeyChecking=no -r ./.env ./docker-compose.prod.yml root@${{ secrets.DIGITAL_OCEAN_IP_ADDRESS }}:/app
ssh -o StrictHostKeyChecking=no root@${{ secrets.DIGITAL_OCEAN_IP_ADDRESS }} << 'ENDSSH'
cd /app
source .env
docker login ghcr.io -u $NAMESPACE -p $PERSONAL_ACCESS_TOKEN
source .env
中有一个特殊字符 - 特别是在 Django 密钥中。 GitHub 动作继续到下一步。我不确定 unauthorized error
是如何产生的,但修复了 source .env 中的语法使其登录。
我的部署脚本如下:
- name: Log in to GitHub Packages
run: echo ${PERSONAL_ACCESS_TOKEN} | docker login ghcr.io -u ${{ secrets.NAMESPACE }} --password-stdin
env:
PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
- name: Build and deploy images on DigitalOcean
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
run: |
scp -o StrictHostKeyChecking=no -r ./.env ./docker-compose_prod.yml root@${{ secrets.DIGITAL_OCEAN_IP_ADDRESS }}:/app
ssh -o StrictHostKeyChecking=no root@${{ secrets.DIGITAL_OCEAN_IP_ADDRESS }} << 'ENDSSH'
cd /app
source .env
docker login ghcr.io -u $NAMESPACE -p $PERSONAL_ACCESS_TOKEN
docker pull $WEB_IMAGE
docker pull $NGINX_IMAGE
docker-compose -f docker-compose.prod.yml up -d
ENDSSH
我得到的错误是
Pulling web (ghcr.io/***/testdriver_tutorial/web:ba673356fe8a9abcf25700b8a12619e414bbaf7c)... Head https://ghcr.io/v2/***/testdriver_tutorial/web/manifests/ba673356fe8a9abcf25700b8a12619e414bbaf7c: unauthorized
登录到GitHub Packages
步骤显示已经成功
更新
我刚刚在数字海洋水滴上做了 docker login ghcr.io -u $NAMESPACE -p $PERSONAL_ACCESS_TOKEN
,它要求输入密码。
如何关闭此密码验证,使其仅使用 PERSONAL_ACCESS_TOKEN
?
问题不在于 docker pull,问题在于 docker 登录之前执行的命令,即 source .env
run: |
scp -o StrictHostKeyChecking=no -r ./.env ./docker-compose.prod.yml root@${{ secrets.DIGITAL_OCEAN_IP_ADDRESS }}:/app
ssh -o StrictHostKeyChecking=no root@${{ secrets.DIGITAL_OCEAN_IP_ADDRESS }} << 'ENDSSH'
cd /app
source .env
docker login ghcr.io -u $NAMESPACE -p $PERSONAL_ACCESS_TOKEN
source .env
中有一个特殊字符 - 特别是在 Django 密钥中。 GitHub 动作继续到下一步。我不确定 unauthorized error
是如何产生的,但修复了 source .env 中的语法使其登录。