Today
-
Yesterday
-
Total
-
  • 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"]

    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://tech.kakaoenterprise.com/180 이 글에서 보면 젠킨스도 좋은 도구인것 같다 차라리 젠킨스를 파볼까 싶다!



    생각 3

    젠킨스에 관심을 가질 단계가 아니었다.

    도커에 대해 더 자세히 공부를 해봐야겠다!

    도커를 공부한 후에 젠킨스에 대해서 파봐야겠다는 다짐 💪😬

    너무 인강에 의존했던것 같다.

    많은 공부가 필요함을 느꼈다!



    생각 4

    오 뒤늦게 깃허브를 뒤져보니 프로젝트가 올려볼만한게 1개뿐이 안보인다 😵‍💫

    온전히 내가 작성한 프로젝트만 띄울 계획이었는데

    온전히 내가 작성한 프로젝트가 1개밖에 없다;

    왜 여러개라고 생각했지

    오마이갓

    너무 뒤늦게 확인했다.

    기억 왜곡이 심하게 일어났네..

    그래도 돌이켜 생각해보면 착각하고 있었던 덕분에 많은 걸 해볼 수 있었다.

    1개인 줄 알고 있었더라면 도커 사용해볼 생각도 안했을테고 서브 도메인 여러개 띄워볼 생각도 안했겠지 어쩌면 메인 도메인에 과제만 올려놓고 끝냈을 수도 있었겠다.

Designed by Tistory / Custom by 얼거스