繁体   English   中英

使用 Docker 在 AWS ECS 上使用 Github 操作进行 Compose

[英]Deploy with Docker Compose on AWS ECS with Github actions

我最近开始尝试使用 ECS、Docker Compose 和上下文,这真的很有趣。 我已经设法通过我的终端使用docker compose up和 ecs-context 部署和托管一个组合文件,但我也想通过类似 Github 操作来自动化这个。

我正在努力看看如何设置它,我还没有找到它的指南。

有什么好的资源可以进一步研究吗? 通过 Github 在 AWS 上执行 CI/CD 的替代或什至更好的方法是什么?

StackOverflow 问题有点开放,但这篇博文将向您展示如何使用 AWS 原生 CI/CD 工具通过 docker 组合集成部署到 ECS 的示例。

我不再使用 Docker Compose,而是手动编写了 CloudFormation 模板。 Docker Compose 仍然有一些限制,需要一些古怪的解决方法。

但是对于任何想知道在离开它之前我是如何解决这个问题的人(包括 GHA 缓存):

name: Deploy with Docker Compose

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout source code
        uses: actions/checkout@v2

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ${{ secrets.AWS_REGION }}

      - name: Login to Amazon ECR
        id: login-ecr
        uses: aws-actions/amazon-ecr-login@v1

      - name: Setup Buildx
        id: buildx
        uses: docker/setup-buildx-action@v1

      - name: Build and push <YOUR_IMAGE>
        uses: docker/build-push-action@v2
        with:
          context: .
          push: true
          cache-from: type=gha,scope=<YOUR_IMAGE>
          cache-to: type=gha,scope=<YOUR_IMAGE>
          tags: |
            ${{ steps.login-ecr.outputs.registry }}/${{ secrets.ECR_REPOSITORY }}:<YOUR_IMAGE>-${{ github.sha }}
            ${{ steps.login-ecr.outputs.registry }}/${{ secrets.ECR_REPOSITORY }}:<YOUR_IMAGE>-latest

      - name: Install Docker Compose
        run: curl -L https://raw.githubusercontent.com/docker/compose-cli/main/scripts/install/install_linux.sh | sh

      - name: Docker context
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_REGION: ${{ secrets.AWS_REGION }}
          ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY }}
          GITHUB_SHA: ${{ github.sha }}
        run: |
          docker context create ecs ecs-context --from-env
          docker --context ecs-context compose up

我也在搜索这个,但我没有找到任何东西可以确认使用任何 AWS GitHub 操作是可能的。 但是,您可以将多个容器指定为同一个 ECS 任务定义的一部分

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM