-
Docker : Spring Boot 프로젝트 이미지 생성 & 서버 실행OS/Ubuntu 2023. 12. 10. 00:01
local : windows
1. Spring Boot Project jar 파일 생성
1-1. jar 이름 설정
spring boot 프로젝트의 build.gradle 파일을 열고, 다음의 내용을 작성해준다.
bootJar { archiveFileName = '이름작성.jar' }
1-2. project build
1-2-1. intelliJ를 통해서 build
1-2-1-1. clean
인텔리제이 우측의
Gradle
-Tasks
-build
-clean
을 순서대로 눌러준다.
1-2-1-2. build
인텔리제이 우측의
Gradle
-Tasks
-build
-build
를 순서대로 눌러준다.jar 파일 생성 확인!
1-2-2. windows terminal로 build
1-2-2-1. 파일 탐색기를 통해 프로젝트 위치로 이동 후 터미널 실행
1-2-2-2. clean
clean을 먼저 진행해서 build 폴더 청소
.\gradlew clean
1-2-2-3. build
.\gradlew build
2. docker image 생성
2-1. docker file 작성
프로젝트의 루트 디렉토리에 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"]
- 입력값 정보 image파일 검색 : https://hub.docker.com/
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"]
2-2. docker file build
2-2-1. docker 로그인
docker login
2-2-2. docker image 생성
docker build -t zhyun/test-spring-boot .
- 입력값 정보
docker build -t {docker-hub-username}/{생성될-image-name} {Dockerfile-위치}
인텔리제이 내장 터미널을 사용했더니 로그가 짤렸다 😠 윗부분을 먹어버림;
2-2-3. docker 이미지 생성 확인
docker images
3. docker hub에 이미지 업로드
3-1. repositories 접속
https://hub.docker.com/ docker hub에 접속후 로그인 -> repositories 클릭
3-2. Create Repository
3-3. Repository 생성
오른쪽 tip에 보면
docker tag local-image:tagname new-repo:tagname docker push new-repo:tagname
형식으로 이미지를 repository에 올리게 된다고 알려준다!
3-4. Repository 생성 후 화면 정보
이 화면에서 보면 우측에 이런 코드가 안내된다.
docker push zhyun/spring-boot:tagname
이전 화면에서 안내받은 tip 정보와 비교해 봤을 때
new-repo에 해당하는 값이 '사용자계정이름/repository이름' 인듯 하다.
3-5. image repository upload !
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를 확인해보면 이미지파일이 등록되어있다.
server : ubuntu
1. docker 로그인
docker login
2. docker 이미지 다운로드
docker pull {계정 이름}/{repository 이름}:{tag 이름}
docker pull zhyun/spring-boot:1
이미지 확인 !
3. docker 컨테이너 실행
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
생각 1
그동안 진행해왔던 프로젝트 과제들을 서버에 띄우기 위해 docker를 사용해야함을 깨달았다.
왜냐하면 과제들의 java 버전이 제각각이기 때문이다 😔
프로젝트 코드를 최대한 수정하지 않고 띄워보고 싶은 욕심이 있음!
생각 2
글을 쓰는 도중에 github actions 에 대해 알게 되었지만
- https://hudi.blog/github-actions-concepts/
- https://hudi.blog/deploy-with-docker-and-github-actions/ └ 이 블로그에 의하면 스프링 부트 애플리케이션 빌드부터 배포 및 실행까지 github action을 통해서 할 수 있다.
- https://docs.github.com/ko/actions/using-workflows/workflow-syntax-for-github-actions
지금 하기에는 너무 어려워보여서 나중에 자세히 알아보기로 마음먹었다
ㅋㅋ..;
+ https://tech.kakaoenterprise.com/180 이 글에서 보면 젠킨스도 좋은 도구인것 같다 차라리 젠킨스를 파볼까 싶다!
- https://velog.io/@msung99/CICD-Jenkins-Docker-를-활용한-SpringBoot-배포-자동화-구축
- https://velog.io/@hind_sight/Docker-Jenkins-도커와-젠킨스를-활용한-Spring-Boot-CICD
생각 3
젠킨스에 관심을 가질 단계가 아니었다.
도커에 대해 더 자세히 공부를 해봐야겠다!
도커를 공부한 후에 젠킨스에 대해서 파봐야겠다는 다짐 💪😬
너무 인강에 의존했던것 같다.
많은 공부가 필요함을 느꼈다!
생각 4
오 뒤늦게 깃허브를 뒤져보니 프로젝트가 올려볼만한게 1개뿐이 안보인다 😵💫
온전히 내가 작성한 프로젝트만 띄울 계획이었는데
온전히 내가 작성한 프로젝트가 1개밖에 없다;
왜 여러개라고 생각했지
오마이갓
너무 뒤늦게 확인했다.
기억 왜곡이 심하게 일어났네..
그래도 돌이켜 생각해보면 착각하고 있었던 덕분에 많은 걸 해볼 수 있었다.
1개인 줄 알고 있었더라면 도커 사용해볼 생각도 안했을테고 서브 도메인 여러개 띄워볼 생각도 안했겠지 어쩌면 메인 도메인에 과제만 올려놓고 끝냈을 수도 있었겠다.
'OS > Ubuntu' 카테고리의 다른 글
apache2 + ubuntu22 : let's encrypt 자동 갱신 설정 (0) 2023.12.17 Ubuntu 22: Apache2 + Certbot 환경에서 Vault SSL 연결 (0) 2023.12.15 ubuntu 22 : apache 2 + tomcat 띄우기 (0) 2023.12.10 ubuntu 22 : 🐳 + MySQL 8 + MariaDB 11 설치 시도 기록 (0) 2023.12.09 도커 Docker 🐳 (0) 2023.12.09