Skip to content

Merge pull request #62 from OZ-Coding-School/feature/recipe-api #83

Merge pull request #62 from OZ-Coding-School/feature/recipe-api

Merge pull request #62 from OZ-Coding-School/feature/recipe-api #83

Workflow file for this run

name: Deploy to EC2 with Docker Compose and Migration
on:
push:
branches:
- develop
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Print environment variables
run: |
echo "RDS_DATABASE=${{ secrets.RDS_DATABASE }}"
echo "RDS_USERNAME=${{ secrets.RDS_USERNAME }}"
echo "RDS_PASSWORD=${{ secrets.RDS_PASSWORD }} (masked)"
echo "RDS_HOSTNAME=${{ secrets.RDS_HOSTNAME }}"
echo "RDS_PORT=${{ secrets.RDS_PORT }}"
- name: Copy project files to EC2
uses: appleboy/scp-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
source: "./Django/."
target: /home/ubuntu/my-app
- 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: ap-northeast-2
- name: Install Docker on EC2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
script: |
sudo apt-get update
sudo apt-get install docker.io -y
sudo service docker start
sudo usermod -a -G docker $USER # docker 그룹에 사용자 추가
newgrp docker # 변경된 그룹 적용
- name: Install Docker Compose on EC2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
script: |
sudo curl -L "https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Create .env file on EC2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
script: |
cd /home/ubuntu/my-app/Django
cat << EOF > .env
RDS_DATABASE=${{ secrets.RDS_DATABASE }}
RDS_USERNAME=${{ secrets.RDS_USERNAME }}
RDS_PASSWORD=${{ secrets.RDS_PASSWORD }}
RDS_HOSTNAME=${{ secrets.RDS_HOSTNAME }}
RDS_PORT=${{ secrets.RDS_PORT }}
GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }}
GOOGLE_CLIENT_SECRET=${{ secrets.GOOGLE_CLIENT_SECRET }}
STATE=${{ secrets.STATE }}
SECRET_KEY=${{ secrets.SECRET_KEY }}
ENCRYPTION_KEY=${{ secrets.ENCRYPTION_KEY }}
DEBUG=${{ secrets.DEBUG }}
IPv4=${{ secrets.EC2_IPv4 }}
HOST=${{ secrets.BACKEND_DOMAIN }}
ALLOWED_HOSTS=${{ secrets.BACKEND_DOMAIN }},${{ secrets.EC2_IPv4 }}
PORT= ${{ secrets.Django_Port }}
CORS_ALLOWED_ORIGINS = http://${{ secrets.EC2_IPv4 }}:${{ secrets.DJANGO_PORT }}, http://${{ secrets.EC2_IPv4 }}:${{ secrets.FRONT_PORT }},http://${{ secrets.BACKEND_DOMAIN }}:${{ secrets.DJANGO_PORT }}, http://${{ secrets.FRONT_DOMAIN }}:${{ secrets.FRONT_PORT }},https://${{ secrets.BACKEND_DOMAIN }}, https://${{ secrets.FRONT_DOMAIN }},http://${{ secrets.BACKEND_DOMAIN }}, http://${{ secrets.FRONT_DOMAIN }}, http://localhost:${{ secrets.FRONT_PORT }}
SESSION_COOKIE_DOMAIN =${{ secrets.FRONT_DOMAIN }}
EOF
- name: Build and run Docker Compose on EC2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
script: |
cd /home/ubuntu/my-app/Django
docker-compose --version # Docker Compose 버전 확인
sudo docker-compose down # 기존 컨테이너 중지 및 제거 (오류 무시)
sudo docker-compose build # Docker 이미지 빌드
sudo docker-compose up -d --build --force-recreate # 컨테이너 실행 (백그라운드)