spring boot 프로젝트의 build.gradle 파일을 열고, 다음의 내용을 작성해준다.
bootJar {
archiveFileName = '이름작성.jar'
}
인텔리제이 우측의 Gradle
- Tasks
- build
- clean
을 순서대로 눌러준다.
인텔리제이 우측의 Gradle
- Tasks
- build
- build
를 순서대로 눌러준다.
jar 파일 생성 확인!
clean을 먼저 진행해서 build 폴더 청소
.\gradlew clean
.\gradlew build
프로젝트의 루트 디렉토리에 docker file 작성
확장자가 없는 파일을 생성한 후
메모장이나 에디트플러스 같은 파일 편집기를 통해 실행하고 아래 내용 작성
#Dockerfile
FROM openjdk:19
ARG JAR_FILE=build/libs/app.jar
COPY ${JAR_FILE} ./test.jar
ENV TZ=Asia/Seoul
ENTRYPOINT ["java", "-jar", "./test.jar"]
FROM image파일이름:버전
ARG JAR_FILE=build/libs/프로젝트build파일이름.jar
COPY ${JAR_FILE} ./docker에서-사용할-jar파일이름.jar
ENV TZ=Asia/Seoul
ENTRYPOINT ["java", "-jar", "./docker에서-사용할-jar파일이름.jar"]
docker login
docker build -t zhyun/test-spring-boot .
docker build -t {docker-hub-username}/{생성될-image-name} {Dockerfile-위치}
인텔리제이 내장 터미널을 사용했더니 로그가 짤렸다 😠
윗부분을 먹어버림;
docker images
https://hub.docker.com/
docker hub에 접속후 로그인 -> repositories 클릭
오른쪽 tip에 보면
docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname
형식으로 이미지를 repository에 올리게 된다고 알려준다!
이 화면에서 보면 우측에 이런 코드가 안내된다.
docker push zhyun/spring-boot:tagname
이전 화면에서 안내받은 tip 정보와 비교해 봤을 때
new-repo에 해당하는 값이 '사용자계정이름/repository이름' 인듯 하다.
repository에 올릴 이미지에 태그 생성
다양한 시행착오 결과 다음과 같이 작성해야 함을 알아내었다.
docker tag {docker images로 조회했을때 나온 REPOSITORY 이름}:{docker images로 조회했을때 나온 TAG} {docker hub 계정이름}/{repository 이름}:{생략 가능한 지정해줄 tag 이름}
docker tag zhyun/test-spring-boot:latest zhyun/spring-boot:1
이 때 docker images로 조회했을때 나온 TAG
부분은 안적어줘도 동작한다.
안적어주면 latest 로 올라간다.
생성된 이미지 목록 확인
docker images
tag 입력한 이미지파일 hub로 업로드!
docker push zhyun/spring-boot:1
docker hub에 들어가서 repository를 확인해보면 이미지파일이 등록되어있다.
docker login
docker pull {계정 이름}/{repository 이름}:{tag 이름}
docker pull zhyun/spring-boot:1
이미지 확인 !
run 옵션에 대해 자세히 알아보는 시간이 필요한것 같다!
실행에 성공한 명령어 👇
docker run --name spring-test-container -d -p 8080:8899 zhyun/spring-boot:1
동작중인 docker container 확인!
docker ps
실행중인 port 확인!
netstat -tulpn
페이지 확인!
https://project.zhyun.kim
그동안 진행해왔던 프로젝트 과제들을 서버에 띄우기 위해
docker를 사용해야함을 깨달았다.
왜냐하면 과제들의 java 버전이 제각각이기 때문이다 😔
프로젝트 코드를 최대한 수정하지 않고 띄워보고 싶은 욕심이 있음!
글을 쓰는 도중에 github actions 에 대해 알게 되었지만
지금 하기에는 너무 어려워보여서 나중에 자세히 알아보기로 마음먹었다
ㅋㅋ..;
+
https://tech.kakaoenterprise.com/180
이 글에서 보면 젠킨스도 좋은 도구인것 같다
차라리 젠킨스를 파볼까 싶다!
젠킨스에 관심을 가질 단계가 아니었다.
도커에 대해 더 자세히 공부를 해봐야겠다!
도커를 공부한 후에 젠킨스에 대해서 파봐야겠다는 다짐 💪😬
너무 인강에 의존했던것 같다.
많은 공부가 필요함을 느꼈다!
오 뒤늦게 깃허브를 뒤져보니 프로젝트가 올려볼만한게 1개뿐이 안보인다 😵💫
온전히 내가 작성한 프로젝트만 띄울 계획이었는데
온전히 내가 작성한 프로젝트가 1개밖에 없다;
왜 여러개라고 생각했지
오마이갓
너무 뒤늦게 확인했다.
기억 왜곡이 심하게 일어났네..
그래도 돌이켜 생각해보면 착각하고 있었던 덕분에 많은 걸 해볼 수 있었다.
1개인 줄 알고 있었더라면 도커 사용해볼 생각도 안했을테고
서브 도메인 여러개 띄워볼 생각도 안했겠지
어쩌면 메인 도메인에 과제만 올려놓고 끝냈을 수도 있었겠다.