안녕하세요. 오늘은 도커를 이용해 springboot 서버를 배포 해보겠습니다.
우선 도커에 springboot 서버를 배포하기 위해서 springboot 서버를 간단하게 만들어 보겠습니다.
[서버 개발]
@RestController
public class TestController {
@GetMapping("/test")
public String test(){
return "docker complete";
}
}
"docker complete" 이라는 문자열을 반환하는 기본적인 API 하나를 만들었습니다.
[이미지 다운을 위한 설정]
이제 프로젝트 최상위 경로에 Dockerfile 이라는 파일을 만들어 줍니다.
FROM amazoncorretto:17
ARG JAR_PATH=./build/libs
ARG JAR_FILE=docker-0.0.1-SNAPSHOT.jar
COPY ${JAR_PATH}/${JAR_FILE} ${JAR_PATH}/dockertest.jar
ENTRYPOINT ["java","-jar","./build/libs/dockertest.jar"]
Dockerfile 안에 적힌 코드들은 도커 이미지를 만들어주기 위한 설정들 입니다.
FROM : 특정 이미지를 Docker hub에서 가져다가 설치합니다.
ARG : 변수를 설정해줍니다.
COPY : 이경로를 이경로에 복사 해줍니다. (인자가 2개 입니다.)
ENTRYPOINT : 컨테이너가 생성되고 최초로 실행할 때 수행해줍니다.
[서버 빌드]
서버파일을 빌드해주겠습니다.
(Gradle 기준입니다.)
Tasks -> build -> clean -> build -> bootJar
순서대로 눌러주세요.
[이미지 다운]
설정이 완료 되었다면 저희가 직접 설정해준 이미지를 내려받겠습니다.
docker build -t dockertest .
build 라는 명령어로 dockertest라는 이미지명을 정해서 이미지를 내려받았습니다.
[이미지 실행]
이제 받은 이미지를 실행 시켜 보겠습니다.
docker run -p 8080:8080 dockertest
run 라는 명령어로 dockertest 라는 이미지를 실행 시키겠다는 명령어 입니다.
중간에 -p 8080:8080 은 도커 컨테이너 포트 포워딩 설정 입니다.
:(콜론) 기준으로 왼쪽은 호스트 시스템의 포트이고 오른쪽은 도커 컨테이너 내부 TCP포트 입니다.
(다수의 "-p" 옵션을 사용하여 다수의 포트 맵핑을 지정해 줄 수도 있습니다.)
[배포 확인]
이제 도커에 서버가 제대로 배포 됐는지 확인 해 보겠습니다.
네. 저희가 만들었던 문자열 반환값이 제대로 출력 되었습니다.
이상으로 도커로 서버 배포를 해보는 시간을 가져 보았습니다.
잘못된 내용이 있다면, 언제든 댓글로 남겨주시면 감사하겠습니다.
끝!
'Docker' 카테고리의 다른 글
docker로 nginx를 이용하여 로드밸런싱 하기 (0) | 2023.08.02 |
---|---|
docker hub에 내 이미지 업로드 하기 (0) | 2023.07.13 |
docker compose 로 springboot + react + mysql(mariadb) 3tier 컨테이너 연동 및 실행하기 (4) | 2023.07.07 |
how to solve ERROR [internal] load metadata for docker.io/libaray/~~ (0) | 2023.07.03 |
docker 컨테이너 종료안됌 (이미지삭제안됌) (0) | 2023.06.30 |