docker 创建上下文 ecs 在 github 操作中失败

docker create context ecs fails in github actions

我正在尝试 deploy my docker containers to ECS using docker compose。一切都在本地按预期工作,但是当我尝试在 github 操作工作流程中执行相同操作时,我在尝试 运行 docker create context ecs ecscontext:

时收到以下错误

"docker context create" requires exactly 1 argument.

我首先假设错误是因为 github 运行ner 上的 docker 和 docker-compose 版本与我本地的不同,所以我卸载了它们并重新安装它们。这是修改后的工作流文件:

name: deploy

on:
  workflow_dispatch:
  repository_dispatch:
    types: [update_stack]

jobs:
  deploy:
    name: "Deploy stack"
    runs-on: ubuntu-latest
    env:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY}}
      AWS_DEFAULT_REGION: us-east-1
    steps:
      -
        name: Update docker version
        run: |
          sudo apt-get remove docker docker-engine docker.io containerd runc
          sudo apt-get update -y
          sudo apt-get install -y ca-certificates curl gnupg lsb-release
          curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
          echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
          sudo apt-get update -y
          sudo apt-get install -y docker-ce docker-ce-cli containerd.io
      -
        name: Update docker-compose version
        run: |
          sudo rm /usr/local/bin/docker-compose
          sudo mkdir -p /usr/local/lib/docker/cli-plugins
          sudo curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
          sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
      -
        name: check docker new version 
        run: docker -v
      -
        name: check docker compose new version 
        run: docker compose version
      -
        name: Create ECS docker context
        run: sudo docker context create ecs ecscontext --from-env

docker -v 输出与我在本地的输出相同:Docker version 20.10.12, build e91ed57

docker compose version输出和我本地的一样:Docker Compose version v2.2.3

但它仍然在创建上下文步骤中失败。感谢您的帮助。

事实证明 dockerdocker-compose 二进制文件无关紧要,我不得不通过 运行 sudo curl -L https://raw.githubusercontent.com/docker/compose-cli/main/scripts/install/install_linux.sh | sudo sh 更新 docker CLI。新的工作流程如下所示:

name: deploy

on:
  workflow_dispatch:
  repository_dispatch:
    types: [update_stack]

jobs:
  deploy:
    name: "Deploy stack"
    runs-on: ubuntu-latest
    env:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY}}
      AWS_DEFAULT_REGION: us-east-1
    steps:
      -
        name: Update docker-compose version
        run: |
          sudo curl -L https://raw.githubusercontent.com/docker/compose-cli/main/scripts/install/install_linux.sh | sudo sh
      -
        name: check docker new version 
        run: docker -v
      -
        name: check docker compose new version 
        run: docker compose version
      -
        name: Create ECS docker context
        run: sudo docker context create ecs ecscontext --from-env