Skip to content

[infra] #13 Docker CI/CD #3

[infra] #13 Docker CI/CD

[infra] #13 Docker CI/CD #3

Workflow file for this run

name: Docker CI/CD with Compose
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build-and-deploy:
runs-on: ubuntu-22.04
steps:
# 1. ์†Œ์Šค์ฝ”๋“œ ์ฒดํฌ์•„์›ƒ
- name: Checkout code
uses: actions/checkout@v4
# 2. Docker Buildx ์„ค์ •
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# 3. DockerHub ๋กœ๊ทธ์ธ
- name: DockerHub ๋กœ๊ทธ์ธ
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# 4. Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ฐ ํ‘ธ์‹œ
- name: Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ฐ ํ‘ธ์‹œ
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: yeeun0702/spring-plus:latest
# 5. docker-compose.yml์„ EC2์— ๋ณต์‚ฌ
- name: EC2์— docker-compose.yml ์—…๋กœ๋“œ
uses: appleboy/scp-action@v0.1.4
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_KEY }}
source: docker-compose.yml
target: /home/${{ secrets.EC2_USER }}/app/
# 6. EC2์—์„œ docker-compose ์‹คํ–‰
- name: EC2์—์„œ docker-compose๋กœ ๋ฐฐํฌ
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_KEY }}
script: |
cd /home/${{ secrets.EC2_USER }}/app
docker compose pull
docker compose down || true
docker compose up -d