Merge pull request #62 from OZ-Coding-School/feature/recipe-api #83
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 # 컨테이너 실행 (백그라운드) |