
해당 내용은 다른 블로그에서 참고하여 작성하였습니다.
호스팅 서비스를 이용하기 위해서는 특정한 서버 환경에 배포를 해야하기 때문에 그에 따른 설정을 맞춰줘야 합니다
하지만 매번 다른 웹서비스를 이용할 때 마다 설정을 해야하며, 서버마다 각각의 설정을 해줘야 하여 많은 자원 남이가 있습니다.
이런 다른 환경에서의 작업을 규격화하여 정의를 하기 위해 도커를 사용합니다.
윈도우 환경은 Docker desktop만 설치하면 Docker 사용이 가능하다
JDK : 17
IDE : IntelliJ
Spring Boot : 3.1.5
Build Tool : Gradle
Docker : 26.1.4
라이브러리 : Spring Web

@RestController
public class HelloController {
@GetMapping("/")
public String hello(){
return "hello";
}
}
# JDK 17 기반
FROM openjdk:17
# build할 jar 파일 변수 선언
ARG JAR_FILE=build/libs/*.jar
# build/libs에 있는 JAR파일을 Docker 이미지의 app.jar로 복사
COPY ${JAR_FILE} app.jar
# Docker 컨테이너가 실행되면 java -jar app.jar 명령어를 실행하여 Spring boot 실행
ENTRYPOINT ["java", "-jar", "app.jar"]
cd [프로젝트 경로]
./gradlew clean build


Docker 실행 전 로컬에서 정상적으로 실행 가능한지 먼저 테스트를 해본다


cd [프로젝트 경로] or [프로젝트 경로 + \build\libs\]
java -jar .\build\libs\docker_test-0.0.1-SNAPSHOT.jar
or
java -jar docker_test-0.0.1-SNAPSHOT.jar
기본 포트는 8080을 사용하지만 이미 8080을 사용하고 있을 시
다른포트를 사용하거나
8080포트를 죽이면 된다
1. netstat -a -o
2. 8080 포트의 PID 찾기
3. taskkill /f /pid [pid번호]
Docker 사용전에 Docker Hub에 Repositories를 만들었다.

저렇게 만들고 난 후 Docker desktop에는 자동으로 생성되어있는걸 확인할 수 있다.

본격적으로 Docker 사용을 하기 위해 이미지를 빌드해준다

이미지 빌드 명령어
docker build -t [dockerID/dockerHubRepository이름] .


docker push [dockerID/dockerHubRepository이름]


로컬에는 이미지가 없다는 가정하에 Hub에서 가져와 구동시켜보겠다.
만약 이미지가 있다면 제거하기
docker rmi [이미지ID or 이미지 이름]
docker run -p 8080:8080 도커허브ID/이미지이름

구동시키게 되면 Docker desktop에는 container에 이렇게 표시된다

결과

다음은 Docker에 MySQL을 사용해서 작성할 생각이다.