feat : dockerignore추가 #56
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: CI/CD using GitHub Actions & Docker | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
permissions: | |
contents: read | |
jobs: | |
CI-CD: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v2 | |
- name: Set up Python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.11.6' | |
- name: Create .env file | |
run: | | |
echo "AWS_ACCESS_KEY_ID=${{secrets.AWS_ACCESS_KEY}}" > .env | |
echo "AWS_SECRET_ACCESS_KEY=${{secrets.AWS_SECRET_KEY}}" >> .env | |
echo "BUCKET_NAME=${{secrets.BUCKET_NAME}}" >> .env | |
echo "REGION_NAME=${{secrets.REGION_NAME}}" >> .env | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r requirements.txt | |
# Docker 빌드 & 푸시 (개선된 부분) | |
- name: Docker Login | |
uses: docker/login-action@v1 | |
with: | |
username: ${{ secrets.DOCKERHUB_NAME }} | |
password: ${{ secrets.DOCKERHUB_PASSWORD }} | |
- name: Build and Push Docker Image | |
uses: docker/build-push-action@v2 | |
with: | |
context: . | |
file: ./Dockerfile | |
push: true | |
tags: ${{ secrets.DOCKERHUB_NAME }}/${{ secrets.DOCKERHUB_REPOSITORY }}:latest | |
# Docker-compose 파일 및 .env 파일 EC2로 전송 (변경 없음) | |
- name: SCP docker-compose file to EC2 | |
uses: appleboy/scp-action@master | |
with: | |
host: ${{ secrets.HOST_PROD }} | |
username: ubuntu | |
key: ${{ secrets.PRIVATE_KEY }} | |
source: "docker-compose.yml" | |
target: "/home/ubuntu/server-flask" | |
port: 22 | |
- name: SCP .env file to EC2 | |
uses: appleboy/scp-action@master | |
with: | |
host: ${{ secrets.HOST_PROD }} | |
username: ubuntu | |
key: ${{ secrets.PRIVATE_KEY }} | |
source: ".env" | |
target: "/home/ubuntu/server-flask" | |
port: 22 | |
# EC2에서 Docker Compose를 사용한 서비스 재시작 (개선된 부분) | |
- name: Restart services using docker-compose on EC2 | |
uses: appleboy/ssh-action@master | |
with: | |
host: ${{ secrets.HOST_PROD }} | |
username: ubuntu | |
key: ${{ secrets.PRIVATE_KEY }} | |
script: | | |
cd /home/ubuntu/server-flask | |
sudo docker login -u ${{ secrets.DOCKERHUB_NAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }} | |
sudo docker-compose stop webapp | |
sudo docker-compose rm -f webapp | |
sudo docker pull ${{ secrets.DOCKERHUB_NAME }}/${{ secrets.DOCKERHUB_REPOSITORY}} | |
sudo docker tag ${{ secrets.DOCKERHUB_NAME }}/${{ secrets.DOCKERHUB_REPOSITORY}} ${{ secrets.DOCKER_IMAGE_NAME }} | |
sudo docker-compose up -d | |
port: 22 |