-
How to deploy service to ECS of Alibaba Cloud.(use github actions)Infra/DevOps 2023. 6. 26. 19:16
중국 알리바바 클라우드 ECS에 프로젝트를 빌드&배포 하는 cicd github actions를 작성했다.
기본적으로 배포는 tag로 버전 관리를 했고,
tag push를 trigger로 활용했다.
도커 이미지는 기본적으로 ACR에 push를 하고, ECS에서 가져온다.
알리바바 클라우드는 aws와 네이밍이 조금 다르다,
EC2 = ECSECR = ACR
기본적으로 ECS에 도커가 설치돼 있어야하고, docker-compose.yaml가 저장되는 위치에 .env 파일을 미리 업로드해 놔야한다.
빌브와 배포는 아래 yaml 코드를 활용하면 된다.
그리고 아래 글을 먼저 참고하면 이해가 쉽겠다.
2023.06.14 - [back-end] - github actions을 사용해 ec2에 docker 서버 빌드배포하기(ci/cd)
name: build and deploy on: push: tags: 'releases-v[0-9]+.[0-9]+.[0-9]+' jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [18.16.0] steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Login to ACR uses: aliyun/acr-login@v1 with: login-server: ***.[REGION].aliyuncs.com username: "${{ secrets.ALIYUN_REGISTRY_USERNAME }}" password: "${{ secrets.ALIYUN_REGISTRY_PASSWORD }}" region-id: "${{ secrets.ALIYUN_REGION_ID }}" - name: Build and push image env: IMAGE_TAG: ${{ github.sha }} run: | docker build -t ***.[REGION].aliyuncs.com/[REGISTRY_NAME]/demo:$IMAGE_TAG . docker push ***.[REGION].aliyuncs.com/[REGISTRY_NAME]/demo:$IMAGE_TAG outputs: IMAGE_TAG: ${{ github.sha }} deploy: needs: build runs-on: ubuntu-latest steps: - name: ssh connect & production uses: appleboy/ssh-action@v0.1.10 with: host: ${{ secrets.ALIYUN_ECS_HOST }} username: ${{ secrets.ALIYUN_ECS_USERNAME }} password: ${{ secrets.ALIYUN_ECS_PASSWORD }} port: ${{ secrets.PORT }} script: | docker login --username ${{ secrets.ALIYUN_REGISTRY_USERNAME }} --password ${{ secrets.ALIYUN_REGISTRY_PASSWORD }} ***.[REGION].aliyuncs.com cat > docker-compose.yaml << EOF version: "3" services: app: env_file: - .env # 서버에 미리 둬야함. container_name: dmeo restart: always image: ***.[REGION].aliyuncs.com/[REGISTRY_NAME]/demo::${{ needs.build.outputs.IMAGE_TAG }} ports: - "80:80" EOF docker-compose up -d
ACR : https://github.com/aliyun/acr-login
'Infra > DevOps' 카테고리의 다른 글