Skip to content

Commit

Permalink
chore: 배포 테스트
Browse files Browse the repository at this point in the history
  • Loading branch information
shdhkim committed Dec 21, 2024
1 parent 4fe0e4b commit 8160002
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 20 deletions.
21 changes: 17 additions & 4 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,13 @@ jobs:
chmod 400 ec2_key.pem
ssh-keyscan -H $HOST >> ~/.ssh/known_hosts
# 전체 프로젝트를 EC2로 전송
scp -i ec2_key.pem -o StrictHostKeyChecking=no -r $(pwd)/* $USER@$HOST:~/flask-milvus-app/
# 전체 프로젝트를 EC2로 전송 (에러 방지 및 정확한 복사)
rsync -avz -e "ssh -i ec2_key.pem -o StrictHostKeyChecking=no" $(pwd)/* $USER@$HOST:~/flask-milvus-app/
# EC2에서 Docker Compose 실행
ssh -i ec2_key.pem $USER@$HOST << 'EOF'
ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=5 -i ec2_key.pem $USER@$HOST << 'EOF'
set -e
# Docker 설치 (설치되어 있지 않은 경우)
if ! [ -x "$(command -v docker)" ]; then
echo "Docker가 설치되어 있지 않음. 설치 중..."
Expand All @@ -82,14 +84,25 @@ jobs:
fi
# Docker Hub 로그인
echo "Docker Hub에 로그인합니다..."
sudo docker login -u "${DOCKER_USER}" -p "${DOCKER_PASS}"
# 프로젝트 디렉터리 이동 및 Docker Compose 실행
echo "Docker Compose 실행..."
cd ~/flask-milvus-app
sudo docker-compose down || true
sudo docker-compose pull
sudo docker-compose up -d --build
sudo docker-compose up -d --build --timeout 600
# 컨테이너 상태 확인
echo "컨테이너 상태를 확인합니다."
sudo docker-compose ps
# HEALTHCHECK 검증
echo "HEALTHCHECK 검증 중..."
if [[ $(sudo docker inspect --format='{{.State.Health.Status}}' flask-app) != "healthy" ]]; then
echo "ERROR: Flask 컨테이너가 healthy 상태가 아닙니다!"
sudo docker-compose logs flask-app
exit 1
fi
EOF
26 changes: 10 additions & 16 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,28 +18,22 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

# pip 업그레이드 및 캐시 제거
RUN pip install --upgrade pip && pip cache purge
# pip 업그레이드
RUN pip install --upgrade pip

# Python 종속성 설치 (requirements.txt 변경 시에만 다시 빌드됨)
COPY requirements.txt /app/requirements.txt
# Python 종속성 파일 복사 및 설치
COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt

# 애플리케이션 코드 복사 (변경될 가능성이 높음)
# 애플리케이션 코드 복사
COPY . /app/

# Flask 실행 관련 환경 변수 설정
# Flask 애플리케이션 실행을 위한 포트 노출
EXPOSE 5000

# 환경 변수 설정 (Flask 실행)
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
ENV FLASK_RUN_PORT=5000
ENV FLASK_ENV=production

# Flask 실행을 위한 포트 노출
EXPOSE ${FLASK_RUN_PORT}

# 컨테이너 상태 확인
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD curl -f http://localhost:${FLASK_RUN_PORT}/ || exit 1

# 컨테이너 시작 시 Flask 실행
CMD ["python", "-m", "flask", "run", "--host=0.0.0.0", "--port=5000"]
CMD ["flask", "run"]

0 comments on commit 8160002

Please sign in to comment.