使用 github actions 完成服务器 docker 登录报错

使用 github actions 完成服务器 docker 登录报错

name: Deploy app to server

on: [push]

jobs:

deploy-and-restart:

runs-on: ubuntu-latest

steps:

# checkout 代码

- uses: actions/checkout@v2

# 创建 env 文件, 写入项目需要的数据

- name: "create env file"

run: |

         touch .env

         echo ALC_ACCESS_KEY=${{ secrets.ALC_ACCESS_KEY }} >> .env

         echo ALC_SECRET_KEY=${{ secrets.ALC_SECRET_KEY }} >> .env

         echo GITEE_CID=${{ secrets.GITEE_CID }} >> .env

         echo GITEE_SECRET=${{ secrets.GITEE_SECRET }} >> .env

         echo JWT_SECRET=${{ secrets.JWT_SECRET }} >> .env

         echo MONGO_INITDB_ROOT_USERNAME=${{ secrets.MONGO_INITDB_ROOT_USERNAME }} >> .env

         echo MONGO_INITDB_ROOT_PASSWORD=${{ secrets.MONGO_INITDB_ROOT_PASSWORD }} >> .env

         echo MONGO_DB_USERNAME=${{ secrets.MONGO_DB_USERNAME }} >> .env

         echo MONGO_DB_PASSWORD=${{ secrets.MONGO_DB_PASSWORD }} >> .env

         echo REDIS_PASSWORD=${{ secrets.REDIS_PASSWORD }} >> .env

         echo PING_ENV=${{ secrets.PING_ENV }} >> .env

# 拷贝必须文件到一个文件夹, 包括 .env, docker-compose-online.yml. mongo-entrypoint

- name: "copy necessary files in to one folder"

run: |

         mkdir lego-backend

         cp .env docker-compose-online.yml lego-backend

         cp -r mongo-entrypoint lego-backend

         ls -a lego-backend

# 通过 acp 拷贝必要文件到服务器

- name: "copy lego-backend via scp"

uses: appleboy/scp-action@master

with:

host: ${{ secrets.HOST }}

username: ${{ secrets.SSH_USER }}

password: ${{ secrets.SSH_PWD }}

source: "lego-backend"

target: "~"

# 通过 ssh 登录然后重启服务

- name: 'executing ssh and resetart docker'

uses: appleboy/ssh-action@master

with:

host: ${{ secrets.HOST }}

username: ${{ secrets.SSH_USER }}

password: ${{ secrets.SSH_PWD }}

script_stop: true

# 登录阿里云 ACR

# 停止服务 docker-compose down

# 启动服务 docker-compose up -d

# 清理文件, .env 等

script: |

           docker login --username=${{ secrets.ACR_USERNAME }} --password=${{ secrets.ACR_PASSWORD }} registry.cn-hangzhou.aliyuncs.com

           cd ~/lego-backend/

           docker-compose -f docker-compose-online.yml down

           docker-compose -f docker-compose-online.yml up -d

           rm -rf .env

           docker logout registry.cn-hangzhou.aliyuncs.com


https://img1.sycdn.imooc.com//climg/62dc4f1c096cd18032161332.jpg


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好

建议你这样调试一下,先抛开 github actions

直接登录服务器,手动的运行对应的命令(docker login),看看是否能登录成功,看看会有什么问题?


  • smiling233_ 提问者 #1

    我尝试在服务器上使用 docker login, 返回https://img1.sycdn.imooc.com//climg/62dcfa2e09b40a4215480634.jpg

    然而使用 sudo 执行

    虽然给了 WARN 但是最后登录成功了

    https://img1.sycdn.imooc.com//climg/62dcfa620996c80e13340330.jpg

    猜测可能是 docker 没有授权给当前 smiling 用户权限, 我再看看如何处理

    2022-07-24 15:53:52
  • 张轩 回复 提问者 smiling233_ #2
    2022-07-24 16:08:52
  • smiling233_ 提问者 回复 张轩 #3

    感谢老师, 我也在刚刚解决了这个问题, 确实是一样的问题

    主要是因为两个原因造成

    1. docker 没有赋予 ssh user 权限

      1. 我把 当前登录用户添加到了 docker 下

    2. 赋予权限后, ssh user 没有访问 .docker/config.json 的权限

      1. 我修改了 .docker 访问权限 sudo chmod 777 .docker


    2022-07-24 16:29:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师