SpringBootProject/SringBoot_JWT_RestApi

Chaptor.09 - 로컬에 docker설치, Spring boot 프로젝트 도커이미지 만들기, 도커이미지 로컬에서 실행해보기

ironmask431 2022. 4. 18. 22:54

https://www.hanumoka.net/2019/01/21/springBoot-20190121-springboot-deploy-docker/

 

springboot - docker 이미지로 만들어 실행하기

들어가기SpringBoot로 생성한 스프링 프로젝트를 docker 이미지로 만들어서 동작시키는 예제를 만들어보겠다. 준비물윈도우에 docker for windows를 설치 윈도우에 maven 설치 springboot 웹 프로젝트 준비 Spr

www.hanumoka.net

위 링크 참고

 

1. gradle > build 를 실행해서 jar 파일을 생성한다.

build 가 완료되면 /build/libs/ 경로에 jar 파일이 생성된다. 

 

2. 커맨드에서  아래 명령어를 실행한 후 localhost:8080 에서 제대로 구동되는지 확인한다. (정상확인 =)

java -jar springboot-jwt-tutirial-0.0.1.jar

 

1. 로컬에 docker 을 설치한다. 

https://docs.docker.com/desktop/windows/install/

 

2. 다운받은 설치파일로 설치를 진행한다. 

 

3. 도커 설치 완료 후 도커 실행 시 윈도우즈 virtualizaion 가상화 관련 오류 메세지

bios에서 가상화 on 해야한다고 함. (재부팅 f8 bios setup ㄱㄱ)

가상화 on off 여부는 작업관리자 > 성능 탭에서 확인할 수 있다. 

 

4. WSL 2도 추가 설치가 필요하다는 안내메세지 > 해당 링크로 이동해서 WSL 설치 진행한다. 

 

5. 아래 링크 클릭 

 

6. WSL 2 설치 진행중...

 

7. 도커 설치완료 , 도커 실행 

 

8. 커맨드에서 도커 설치 확인 

docker -v

 

9. 도커이미지 테스트 실행 커맨드 실행 

docker run -d -p 80:80 docker/getting-started

 

10. 실행 후 localhost:80 접속해보면 아래와 같은 화면 확인됨.

 

11. 인텔리제이 > 프로젝트 최상단 경로에 DockerFile 생성. 

* 주의 : 확장자가없는 파일임 Dockerfile.txt 라고 하면 
"failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount358418333/Dockerfile: no such file or directory" 에러발생함.

FROM openjdk:11
ADD build/libs/springboot-jwt-tutorial-0.0.1-SNAPSHOT.jar app.jar
ENV JAVA_OPTS=""
ENTRYPOINT ["java","-jar","/app.jar"]

 

12. 만든 DockerFile을 바탕으로 도커 이미지 생성 

docker build --tag springboot-jwt-tutorial-0.0.1 .

 

13. 아래 커맨드로 생성된 도커이미지를 확인 할 수 있다. 

docker images

 

14. 생성된 도커 이미지 실행

docker run -p 8080:8080 springboot-jwt-tutorial-0.0.1

스프링부트jar  구동한것 처럼 똑같이 localhost:8080 포트에서 잘 실행된다. (api 테스트정상)

 

 

15. 도커로 구동시 h2-console 안들어가짐. (/h2-console)

"이 서버에서 원격 연결 ( 'webAllowOthers')을 사용할 수 없습니다. "

https://moonsiri.tistory.com/33 참고해서 수정

 

application.yaml 수정

spring:
  h2:
    console:
      enabled: true
      #로컬이외 환경에서 구동 시 h2-console 접속허용
      settings:
        web-allow-others: true

aws서버 배포 후 h2-console 접속안되는것도 위와 같은 방법으로 해결 가능하다.