의존성으로는 Spring Web
하나만 넣어주었습니다.
도커 이미지 빌드가 목적이므로 기능은 신경쓰지 않을께요.
그래도 확인은 해야하니 간단한 api를 만들어 줍니다.
/hello
로 접근시 hello
를 리턴하는 api입니다.
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
}
프로젝트의 root경로에 Dockerfile
이라는 이름으로 파일을 생성하여 아래 스크립트를 설정해줍니다.
컨테이너에서 사용할 jar
파일, 빌드파일을 생성합니다.
저는 maven
을 사용하고 있으므로 mvn
명령어를 사용합니다.
package
명령어는 컴파일 수행 후 pom.xml
에 설정된 패키징 양식에 맞추어 패키징까지 해줍니다.
mvn package
or mvn clean package
위 명령어를 입력하면 target
폴더가 생성됩니다.
테스트를 위해 빌드된 jar
파일로 서버를 구동시켜볼께요.
java -jar deploy-0.0.1-SNAPSHOT.jar
이제 도커 컨테이너에 올려줄 빌드 파일(jar)가 만들어졌으니 도커 이미지 빌드를 시작할께요.
도커 설치와 도커허브 가입은 굉장히 간단하니 스킵할께요 !
이미지 빌드 명령어
docker build -t [dockerID/dockerHubRepository이름] .
이미지가 생성된 것을 확인할 수 있습니다. (docker images
)
우선 도커 허브에 repository
를 생성합니다.
docker push [이미지명/레포지토리명]
도커 허브에 이미지가 잘 올라간 것을 확인할 수 있습니다.
현재 로컬에는 우리가 만든 도커 이미지가 없습니다.
(있다면 지워주세요. docker rmi [이미지ID or 이미지이름]
)
도커허브의 이미지로 컨테이너 구동
컨테이너에서 80번 포트로 구동하게 설정하였기 때문에 로컬에서 8080포트로 접근하기 위해 포트매핑 후 컨테이너를 구동시킵니다.
(만약 로컬에 이미지가 없다면 도커허브로부터 image pull 후 컨테이너를 구동합니다.)
docker run -p 8080:8080 도커허브ID/이미지이름
테스트 결과
감사합니다. 😁
잘 배우고 가요!!