우리가 도커를 이해해야 하는 이유는 호스팅 서비스를 이용하기 위해서는 특정한 서버 환경에 배포를 해야하기 때문에 그에 따른 설정을 맞춰줘야 됩니다.
하지만 매번 다른 웹서비스를 이용할 때 마다 설정을 해야하며, 서버마다 각각의 설정을해줘야 하여 많은 자원 남이가 있습니다.
이런 다른 환경에서의 작업을 규격화하여 정의를 하기 위해 도커를 사용합니다.

 


#️⃣ 도커 실행 순서

 

1. spring boot 개발

2. jar 파일 생성

3. dockerfile 만들기

4. docker image생성

5. docker container실행

 

먼저 실습을 하기앞서 도커가 설치가 되어있어야 합니다.

 

도커 설치법

 

 


 

1️⃣Spring Boot 개발

해당 포스팅은 도커를 중점으로 하는 내용이기 때문에 spring 프로젝트는 간단히 "Hello World"로 RestContoller를 이용해서 만들겠습니다. 

@RestController
public class IndexController {
    @GetMapping("/")
    public String index() {
        return "Hello World";
    }
}

해당 코드는 깃허브에 올려두었습니다.(깃허브 바로가기)

 

 


 

2️⃣ jar파일 생성

jar파일은 여러 개의 자바 클래스 파일과 클래스들이 이용하는 관련 리소스 등 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트 웨어나 라이브러리를 배포하기 위한 소프트웨어 패키티 타일 포맷입니다.
쉽게 일종의 자바 프로젝트 압축파일로 생각하시면 됩니다.

 

 

 

터미널에서 ./gradlew clean build로 기존의 빌드된 파일을 전부 지우고 다시 빌드를 해줍니다.

프로젝트 폴더>build>libs에 jar파일이 생성된것을 확인할수 있습니다.

 


 

 

 3️⃣도커 파일 만들기

프로젝트 최상단에 Dockerfile을 생성해 주었습니다.

간단하게 도커파일을 작성해 보았습니다. 

해당파일은 깃허브에 올려두었습니다. (깃허브 바로가기)

 

FROM을 사용해서 Base Container image를 지정합니다.

우리는 굳이 jdk를 사용할 필요가 없어서 jre를 이용하였습니다.

(jre는 자바 프로그램을 실행하는데 필요한 도구이고 jdk는 실행뿐 아니라 개발할수잇는 도구입니다. 즉, jdk안에 jre가 포함되어 있습니다. )

COPY는 COPY <복사할 파일 경로> <이미지에서 파일이 위치할 경로>로 호스트(local)에서 이미지에 파일을 추가 해줍니다.

ENTRYPOINT는 컨테이너를 시작할 때 실행할 명령어 입니다.

 


 

 

4️⃣docker image생성

docker build -t dockertestimg . 를 사용해서 dockertestimg라는 이름의 도커이미지를 생성합니다.

docker build -t <타겟이름(생성될 이미지이름)> <도커파일위치>

docker images를 통해 dockertestimg라는 도커이미지가 생성된 것을 확인할수 있습니다. 

 

 


 

 

 

5️⃣docker container실행

docker run <도커이미지명> 을 통해서 도커이미지를 container를 실행시킬수 있습니다.

하지만 여기서 8080포트로 진입을 할수가없습니다.

이미지 기반으로만든 컨테이너 안에서의 8080포트이지 localhost의 8080포트를 사용하는것이 아니기 때문입니다.

따라서 포트맵핑이 필요합니다.

docker run -p 8080:8080 dockertestimg로 컨테이너의 포트를 호스트 시스템의 포트에 바인딩해줍니다.

docker run -p <호스트 시스템의 포트>:<컨테이너 안의 포트> <도커이미지명>

잘 실행되는것을 확인할수있습니다.

 

불편한점은 컨테이너 자체가 foreground로 뜨기 때문에 콘솔을 다시쓸수가 없습니다.

-d (detatched)옵션을 이용해서 background로 띄워서 docker console를 다시 쓸수있게 해주겠습니다. 

docker ps 를 이용해서 현재 도커컨테이너가 잘 실행되는 것을 확인 할수 있습니다. 

 

 

 

 

 

 

 

👀참조

https://hanhyx.tistory.com/27
 

도커(Docker)의 개요 및 장점 그리고 도커를 쓰는 이유

안녕하세요 오늘 포스팅에 앞서 도커 공식 서비스의 메인 로고를 보여드렸습니다. 마치 고래같은 범선 (이미고래잖아..) 이 컨테이너를 운반하는 모습처럼 생겼네요. ( 내 최애...귀염귀염 ) 우선

hanhyx.tistory.com

https://da2uns2.tistory.com/m/entry/Docker-%EB%8F%84%EC%BB%A4%EC%97%90-Spring-Boot-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0
 

[Docker] 도커에 Spring Boot 구축하기

목차 1. Spring Boot 코드 작성 2. jar 파일 생성 3. Dockerfile 만들기 4. 컨테이너 실행하기 1. Spring Boot 코드 작성 간단한 Hello World 코드를 구현했다. 소스코드는 다음과 같다. package hello.hellosprin..

da2uns2.tistory.com

백기선님 유튜브

 

+ Recent posts