728x90
1. RDS 인스턴스 생성
참고
2. Datagrip에서 RDS 연결 테스트
Name : 원하는 DB명 @ RDS 인스턴스 EndPoint
Host : RDS 인스턴스 EndPoint (RDS > Databases > 원하는 RDS 인스턴스 클릭 > Connectivity & security)
User : RDS 생성 시 설정한 유저명
Password : RDS 생성 시 설정한 비밀번호
Test Connection 성공 확인
3. Gradle > bootJar을 통해 .jar 파일 만들기
4. Dockerfile 작성
# Use a base image with OpenJDK 17
FROM openjdk:17-oracle
# Set the working directory
WORKDIR /app
# Copy the application jar file to the container
COPY build/libs/auto_enter_view-0.0.1-SNAPSHOT.jar auto_enter_view-0.0.1-SNAPSHOT.jar
# Expose the application port
EXPOSE 8080
# Define environment variables
ENV SPRING_DATASOURCE_URL=jdbc:mariadb://auto-enter-view-db.ch2uuwgg6wei.ap-northeast-2.rds.amazonaws.com:3306/auto-enter-view-db
ENV SPRING_DATASOURCE_USERNAME=사용자명
ENV SPRING_DATASOURCE_PASSWORD=비밀번호
ENV SPRING_MAIL_HOST=smtp.gmail.com
ENV SPRING_MAIL_PORT=587
ENV SPRING_MAIL_USERNAME=지메일 주소
ENV SPRING_MAIL_PASSWORD=구글 앱 비밀번호
# Run the application
ENTRYPOINT ["java", "-jar", "auto_enter_view-0.0.1-SNAPSHOT.jar"]
5. 터미널에서 도커 이미지 빌드
docker build -t auto-enter-view .
6. EC2 인스턴스 생성 및 보안 그룹 설정
(SSH 키와 jar 파일을 하나의 폴더로 옮김)
7. EC2 인스턴스에 SSH로 접속
chmod 400 AutoEnterViewKey.pem
ssh -i "AutoEnterViewKey.pem" ubuntu@ec2-XX-XXX-XXX-XX.ap-northeast-2.compute.amazonaws.com
8. bash 창에서 Docker 설치
패키지 업데이트
sudo apt-get update
필요한 패키지 설치
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
Docker의 공식 GPG 키 추가
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Docker 저장소 설정
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker 설치
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Docker 서비스 시작
sudo systemctl start docker
sudo systemctl enable docker
현재 사용자에게 Docker 권한 부여
sudo usermod -aG docker $USER
newgrp docker
Docker 실행 확인
docker --version
Docker compose 설치 (선택)
sudo apt-get install docker-compose-plugin
9. Docker Hub 회원가입
10. Docker Hub에 이미지 푸시
로그인
docker login
Docker 이미지 태그 지정
docker image ls
docker tag auto-enter-view imgyuri0517/auto-enter-view:latest
Docker 이미지 푸시
docker push imgyuri0517/auto-enter-view:latest
Docker 이미지 실행
docker run -p 8080:8080 imgyuri0517/auto-enter-view:latest
11. 오류 확인 및 해결
java.lang.NullPointerException: Cannot invoke "org.hibernate.engine.jdbc.spi.SqlExceptiert(java.sql.SQLException, String)" because the return value of "org.hibernate.resourcebackend.jdbc.internal.JdbcIsolationDelegate.sqlExceptionHelper()" is null
위에서 Datagrip을 통해 접속한 RDS DB에 해당 스키마가 존재하지 않아서 생기는 문제 (추정)
'auto-enter-view-db'라는 schema를 만들어주고 다시 실행하니 해결됨
12. bash 창에서 컨테이너 실행 후 제대로 데이터가 저장되는지 확인
MariaDB 로그인
mysql -h [호스트명] -u [사용자명] -p
데이터 확인
ShOW DATABASES;
USE [데이터베이스명];
SHOW TABLES;
SELECT * FROM [테이블명];
'CI | CD' 카테고리의 다른 글
[AWS + Docker] EC2 환경에서 docker-compose 사용하기 (0) | 2024.07.13 |
---|---|
[Docker] 도커 이미지 생성 및 저장하기 - 실습편 (0) | 2024.07.11 |
[Docker] 도커 이미지 생성 및 저장하기 - 이론편 (0) | 2024.07.11 |
[Docker] 도커 컴포즈(docker-compose) 파일 작성하기 - 실습편 (0) | 2024.07.11 |
[Docker] 도커 컴포즈(docker-compose) 파일 작성하기 - 이론편 (0) | 2024.07.11 |