Dockerfile 생성
[방법 1]
- 아래와 같이 dockerfile 생성 시 OOM Error 등 여러 오류 발생
FROM openjdk:11 as *builder. // 베이스 **이미지 *+* 이미지 **별칭
COPY gradlew . // gradlew 복사
COPY gradle gradle // gradle 복사
COPY build.gradle . // build.gradle 복사
COPY settings.gradle . // settings.gradle 복사
COPY src src // 웹 어플리케이션 소스 복사
RUN chmod +x ./gradlew // gradlew 실행 권한 부여
RUN ./gradlew clean bootJar // gradlew 을 사용하여 실행 가능한 jar 파일 생성
FROM openjdk:11 // 베이스 이미지
COPY --from=builder/build/libs/*.jar app.jar // builder 이미지에서 -> build/libs/*.jar 파일을 app.jar 로 복사
EXPOSE 8080 // 컨테이너 Port 노출
ENTRYPOINT ["java","-jar","/app.jar"] // jar 파일 실행
[방법 2] Docker Cache 사용
FROM openjdk:11-jdk
ARG *JAR_FILE*=build/libs/*.jar
COPY ${*JAR_FILE*} app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
gradle 빌드
- 아래 명령어를 통해 빌드하면, build/libs 경로에 jar 파일 생성
./gradlew clean
./gradlew build -x test (-x test: 테스트 실행 X)
Dockerfile → Image Build
- 가장 마지막 점(.) 포함
- M1 인 겨우, -- platform linux/amd64 옵션을 마지막에 추가해야 함
[gradle 인 경우]
docker build --build-arg DEPENDENVY=build/dependency -t 도커허브ID/Repository --platform linux/amd64 .
[gradle 인 경우] OS M1 MAC 이 아닌 경우
docker build --build-arg DEPENDENVY=build/dependency -t 도커허브ID/Repository .
Docker Image 파일 → Docker hub 에 Push
docker push 도커허브ID/Repository
AWS EC2 에서 어플리케이션 배포
AWS EC2 (AMI : Linux2) 접속
cd ~/.ssh
ssh SpringBootServer
AWS EC2 에 Docker 설치 및 버전 확인
sudo yum install docker
sudo docker -- version
Docker 실행
sudo docker pull 도커허브ID/Repository
Docker hub 에 존재하는 Image File Pull
- 이때, tag를 안넣을시 :latest 로 pull 진행
sudo docker pull 도커허브ID/Repository
Docker Image 를 통해 SpringBoot Application 배포(실행)
- 이때, [8080:8080] = 외부 접속 포트 : 도커 컨테이너 포트
sudo docker run -p 8080:8080 도커허브ID/Repository
'Infra' 카테고리의 다른 글
[Infra] 쿠버네티스와 EKS (1) | 2022.09.17 |
---|