Skip to content

Merge pull request #226 from devping-kr/dev #30

Merge pull request #226 from devping-kr/dev

Merge pull request #226 from devping-kr/dev #30

Workflow file for this run

name: Deploy to EC2
on:
push:
branches:
- main # main ๋ธŒ๋žœ์น˜์— push๋  ๋•Œ ์‹คํ–‰
jobs:
deploy:
name: Deploy to EC2
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3 # ์†Œ์Šค ์ฝ”๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ
- name: Set up Docker
uses: docker/setup-buildx-action@v2 # Docker ๋นŒ๋“œ ๋„๊ตฌ ์„ค์ •
- name: Log in to Docker Hub
uses: docker/login-action@v2 # Docker Hub ๋กœ๊ทธ์ธ
with:
username: ${{ secrets.DOCKER_USERNAME }} # Docker Hub ์‚ฌ์šฉ์ž๋ช…
password: ${{ secrets.DOCKER_PASSWORD }} # Docker Hub ๋น„๋ฐ€๋ฒˆํ˜ธ
- name: Build and push Docker image
run: |
docker build -t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}:latest .
docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}:latest
- name: Upload Docker Compose file to EC2
uses: appleboy/scp-action@v0.1.7 # SCP๋ฅผ ์‚ฌ์šฉํ•ด docker-compose.yml ์—…๋กœ๋“œ
with:
host: ${{ secrets.EC2_HOST }} # EC2 IP ์ฃผ์†Œ
username: ${{ secrets.EC2_USER }} # SSH ์‚ฌ์šฉ์ž ์ด๋ฆ„
key: ${{ secrets.EC2_KEY }} # ๊ฐœ์ธ SSH ํ‚ค
source: ./docker-compose.yml # ๋กœ์ปฌ์—์„œ ์—…๋กœ๋“œํ•  ํŒŒ์ผ
target: /home/ec2-user/ # EC2์— ์ €์žฅํ•  ๊ฒฝ๋กœ
- name: SSH to EC2 and deploy
uses: appleboy/ssh-action@v0.1.7 # SSH๋ฅผ ์‚ฌ์šฉํ•ด EC2์— ์ ‘์†
with:
host: ${{ secrets.EC2_HOST }} # EC2 IP ์ฃผ์†Œ
username: ${{ secrets.EC2_USER }} # SSH ์‚ฌ์šฉ์ž ์ด๋ฆ„
key: ${{ secrets.EC2_KEY }} # ๊ฐœ์ธ SSH ํ‚ค
script: |
# Docker ์„œ๋น„์Šค ํ™œ์„ฑํ™”
sudo systemctl start docker
sudo systemctl enable docker
# Docker ์†Œ์ผ“ ๊ถŒํ•œ ์ˆ˜์ •
sudo chmod 666 /var/run/docker.sock
# ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •
echo "LOCAL_DB_URL=jdbc:postgresql://db:5432/${{ secrets.POSTGRES_DB }}" >> /home/ec2-user/.env
echo "LOCAL_DB_USER=${{ secrets.LOCAL_DB_USER }}" >> /home/ec2-user/.env
echo "LOCAL_DB_PASSWORD=${{ secrets.LOCAL_DB_PASSWORD }}" >> /home/ec2-user/.env
echo "LOCAL_MONGODB_URL=${{ secrets.LOCAL_MONGODB_URL }}" >> /home/ec2-user/.env
echo "REDIS_HOST=${{ secrets.REDIS_HOST }}" >> /home/ec2-user/.env
echo "REDIS_PORT=${{ secrets.REDIS_PORT }}" >> /home/ec2-user/.env
echo "REDIS_PASSWORD=${{ secrets.REDIS_PASSWORD }}" >> /home/ec2-user/.env
echo "GOOGLE_EMAIL=${{ secrets.GOOGLE_EMAIL }}" >> /home/ec2-user/.env
echo "GOOGLE_PASSWORD=${{ secrets.GOOGLE_PASSWORD }}" >> /home/ec2-user/.env
echo "JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }}" >> /home/ec2-user/.env
echo "SCHOOL_API_KEY=${{ secrets.SCHOOL_API_KEY }}" >> /home/ec2-user/.env
echo "FOOD_API_KEY=${{ secrets.FOOD_API_KEY }}" >> /home/ec2-user/.env
echo "URL_SERVER=${{ secrets.URL_SERVER }}" >> /home/ec2-user/.env
echo "POSTGRES_DB=${{ secrets.POSTGRES_DB }}" >> /home/ec2-user/.env
echo "GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }}" >> /home/ec2-user/.env
echo "GOOGLE_CLIENT_PASSWORD=${{ secrets.GOOGLE_CLIENT_PASSWORD }}" >> /home/ec2-user/.env
echo "OAUTH_URL=${{ secrets.OAUTH_URL }}" >> /home/ec2-user/.env
echo "SWAGGER_SERVER_URL=${{ secrets.SWAGGER_SERVER_URL }}" >> /home/ec2-user/.env
# ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ ๋ฐ ์ด๋ฏธ์ง€ ์ •๋ฆฌ
sudo docker-compose -f /home/ec2-user/docker-compose.yml --env-file /home/ec2-user/.env down
sudo docker rmi -f ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}:latest || true
# ์ตœ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}:latest
# Docker Compose๋กœ ์„œ๋น„์Šค ์žฌ์‹œ์ž‘
sudo docker-compose -f /home/ec2-user/docker-compose.yml --env-file /home/ec2-user/.env up -d