Springboot 프로젝트를 받아 docker 이미지로 build해 실행하는 과정을 정리해보았다. 🐶
svn이나 git에 올려둔 프로젝트 파일을 받는다.
나는 svn을 사용중이므로 다음 명령어를 통해 다운 받았다.
co는 check out을 의미한다.
$ svn co <Repository주소>
다운로드 받은 폴더에서 mvnx
파일이 있는 내부로 들어간다.
mvnx
파일이 있는 위치에서 아래 명령을 입력하면 target 폴더에 소스 코드를 컴파일하고 패키지가 배포된다.
$ sh ./mvnw package
target 폴더로 이동(cd target
)해보면 jar파일이 생긴 것을 확인할 수 있다.
jar 파일이 있는 위치에서 vi Dockerfile
을 입력해 Dockerfile을 작성한다.
FROM amazoncorretto:8u352-alpine3.16
#JAR_FILE 변수 선언
ARG JAR_FILE=<jar파일명>.jar
COPY ${JAR_FILE} <복사할이름>.jar
#profile.active=dev는 생략 가능
ENTRYPOINT ["java","-jar", "-Dspring.profiles.active=dev", "/<복사할이름>.jar"]
#컨테이너가 사용할 port 지정 -> 외부에서 접속 가능하게 해줌
EXPOSE <port number>
<jar파일명>은 위에서 생성된 jar 파일명, <복사할이름>은 원하는 것을 입력해주면 된다.
아래 명령으로 docker 이미지를 build 한다.
$ docker build -t <docker ID>/<tag명> .
=> docker ID를 입력해줘야 나중에 docker hub에 이미지를 push 할 수 있다.
docker images
로 이미지 목록을 확인해보면 build한 이미지가 추가된 것을 확인할 수 있다!
이제 이미지를 실행해보자!
다음 명령으로 이미지를 실행한다.
-p로 포트를 바인딩 해줄 수 있다.(-p Host port:Container port
)
$ docker run -p 8761:8761 <docker REPOSITORY명>
ip:port
에 접속해 이미지가 실행된 것을 확인할 수 있다.
나는 Eureka Server를 올렸기 때문에 Eureka가 실행된 모습을 볼 수 있었다.
+추가) docker 이미지 삭제하기
아래 두 명령어 모두 docker 이미지를 삭제할 수 있다.
$ docker rmi <REPOSITORY명>:<TAG명> $ docker rmi <IMAGE ID>
https://velog.io/@dhk22/Docker-spring-boot-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EB%8F%84%EC%BB%A4-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A1%9C-%EB%B9%8C%EB%93%9C
https://www.lainyzine.com/ko/article/docker-rmi-removing-docker-images/