1. Spring boot 빌드
스프링부트 프로젝트를 만들어주고 build.gradle에 다음 문구를 추가해준다.
jar {
enabled = false
}
아래는 build.gradle 전체 코드
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.0'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'laptop.gg'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
jar {
enabled = false
}
위 코드를 추가해주지 않으면 프로젝트를 빌드했을 때 plain이 붙은 jar 파일이 추가로 생성된다.
터미널에서 아래 명령어로 빌드한다.
$ ./gradlew build
빌드가 안돼서 고생했는데, 프로젝트는 jdk 17이었고 환경변수는 11로 잡혀 있어서 안됐던 것이었다.
2. Dockerfile 작성 및 Docker Image 생성
이후 아래와 같이 도커 파일을 작성해주었다.
FROM openjdk:17-jdk
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-Dspring.profiles.active=docker", "-jar", "app.jar"]
도커 이미지를 생성하기 위해 우선 로그인을 하고,
$ docker login -u "도커 허브 아이디"
Password: 비번 입력
Login Succeeded
아래와 같이 이미지를 빌드했다.
$ docker build -t "도커 허브 아이디"/laptop-gg:v1.0 .
3. Docker Hub에 이미지 push 및 pull
빌드 성공 후 도커 허브에 이미지를 push.
$ docker push "도커 허브 아이디"/laptop-gg
EC2로 이동해서 푸쉬한 이미지를 pull 해준다. 그러기 위해 로그인부터 해준다.
$ docker login -u "도커 허브 아이디"
$ docker pull "도커 허브 아이디"/laptop-gg:v1.0
pull도 잘 안됐는데, 도커 이미지 앞에 "도커 허브 아이디"/ 를 꼭 해주어야 했다.
이미지 실행
$ sudo docker run -d -p 8080:8080 "도커 허브 아이디"/laptop-gg:v1.0
끝!
이후에는 네이버 클라우드 서버에 젠킨스를 설치해서 EC2의 스프링 부트를 관리하고, 두 도커를 도커 스웜으로 관리해보려고 한다.
'Infra' 카테고리의 다른 글
Jenkins, Github 연결 오류(HTTP ERROR 403 No valid crumb was included in the request 2023) (1) | 2023.12.08 |
---|---|
Naver Cloud 서버 생성 (3) | 2023.11.27 |
EC2(Ubuntu)에 Docker 설치하기 (0) | 2023.11.26 |
EC2에 설치된 주피터 노트북 https 설정 및 백그라운드 설정 (2) | 2023.11.25 |
EC2에 jupyter notebook 설치하기 (2) | 2023.11.25 |