-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.sh
More file actions
executable file
·65 lines (54 loc) · 2.24 KB
/
deploy.sh
File metadata and controls
executable file
·65 lines (54 loc) · 2.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/bash
# 변수 설정
DOCKERHUB_USERNAME="kurigohan73"
IMAGE_NAME="nextjs-app"
EC2_USER="ec2-user"
EC2_HOST="52.79.234.172"
EC2_KEY_PATH=~/Desktop/aikey.pem
SSL_CERT_PATH=~/Desktop
# Docker 이미지 빌드
echo "Docker 이미지 빌드 중..."
docker build --platform linux/amd64 -t $DOCKERHUB_USERNAME/$IMAGE_NAME:latest .
# Docker 이미지 빌드 성공 여부 확인
if [ $? -ne 0 ]; then
echo "Docker 이미지 빌드 실패"
exit 1
fi
# Docker 이미지 태그
echo "Docker 이미지 태그 중..."
docker tag $DOCKERHUB_USERNAME/$IMAGE_NAME $DOCKERHUB_USERNAME/$IMAGE_NAME:latest
# Docker 이미지 푸시
echo "Docker 이미지 푸시 중..."
docker push $DOCKERHUB_USERNAME/$IMAGE_NAME:latest
if [ $? -ne 0 ]; then
echo "Docker 이미지 푸시 실패"
exit 1
fi
# SSH 키 파일 존재 여부 확인
if [ ! -f "$EC2_KEY_PATH" ]; then
echo "SSH 키 파일을 찾을 수 없습니다: $EC2_KEY_PATH"
exit 1
fi
# SSL 인증서 및 프라이빗 키 존재 여부 확인
if [ ! -f "$SSL_CERT_PATH/fullchain.pem" ] || [ ! -f "$SSL_CERT_PATH/privkey.pem" ]; then
echo "SSL 인증서 파일을 찾을 수 없습니다: $SSL_CERT_PATH"
exit 1
fi
# EC2 인스턴스에 SSL 인증서 복사 및 Docker 컨테이너 실행
echo "EC2 인스턴스에 SSL 인증서 복사 및 Docker 컨테이너 실행 중..."
scp -i $EC2_KEY_PATH -o StrictHostKeyChecking=no $SSL_CERT_PATH/fullchain.pem $EC2_USER@$EC2_HOST:/tmp/fullchain.pem
scp -i $EC2_KEY_PATH -o StrictHostKeyChecking=no $SSL_CERT_PATH/privkey.pem $EC2_USER@$EC2_HOST:/tmp/privkey.pem
ssh -i $EC2_KEY_PATH $EC2_USER@$EC2_HOST <<EOF
# SSL 인증서 디렉토리 생성 및 파일 이동
sudo mkdir -p /etc/letsencrypt/live/www.udongrang.com
sudo mv /tmp/fullchain.pem /etc/letsencrypt/live/www.udongrang.com/
sudo mv /tmp/privkey.pem /etc/letsencrypt/live/www.udongrang.com/
# 기존 컨테이너 중지 및 제거
sudo docker stop $IMAGE_NAME || true
sudo docker rm $IMAGE_NAME || true
# Docker 이미지 풀링 및 새로운 컨테이너 실행
sudo docker pull $DOCKERHUB_USERNAME/$IMAGE_NAME:latest
sudo docker run -d --name $IMAGE_NAME -p 3000:3000 \
-v /etc/letsencrypt:/etc/letsencrypt:ro \
$DOCKERHUB_USERNAME/$IMAGE_NAME:latest
EOF