簡體   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