Dokcer

도커(Docker) - Dockerfile, build, run

땍땍 2024. 7. 27. 16:55

터미널에서 docker build 명령어를 이용하여 빌드 하기 위해서는 docker file를 작성해주어야만 한다.

만, 그전에 docker build를 사용하기 위해서는 스프링부트 파일을 우선적으로 build 해주어야 하기에 아래와 같은 명령어를 사용하여 build해주자.

#Gradle 사용 기준
./gradlew build

해당 위치에 이러한 파일이 생성이 되었으면 성공한 것이다.

 

docker file에는 docker를 build하기 위한 정보와, 이후의 실행할 코드들 혹은 환경 변수 등 docker와 관련된 여러가지 사항을 작성할 수 있는 파일이다.

Dockerfile은 보통 프로젝트의 최상단 위치에 생성해주면 되며 , 이름은 대소문자를 구분하기에 정확하게 작성해주어야 한다.

생성된 Dockerfile 내부에 아래와 값을 추가해주자.

# 해당 버전의 이미지를 베이스로 사용
FROM openjdk:17

# build 된 파일을 stduy.jar 이름으로 컨테이너에 복사(추가)
COPY build/libs/study-0.0.1-SNAPSHOT.jar study.jar

# 컨테이너가 실행될 때 해당 명령어(자바 실행 명령어)를 실행 
ENTRYPOINT ["java", "-jar", "ggb.jar"]

이후 터미널에 아래와 같은 명령어를 입력하면 된다.

서버로 docker 파일을 전송하여 run하는 경우에는 플랫폼이 다르면 실행이 안되는 경우도 있기에 --platform을 이용하여 서버의 플랫폼 형식으로 build 하는 것을 권장한다.

# docker build -t <이름>:<태그> <path>
# 태그는 지정하지 않을 경우 기본 값 latest
# path는 Dockerfile 위치를 변경하지 않았을 경우 .(현재)경로를 사용
docker build -t study .

 

성공적으로 build가 되었으면 이미지가 추가가 되었는지 확인해보자.

docker images

다른 서버로 배포를 목적으로 하는 경우에는 이 단계에서 보통 docker repository와 연결하여 push를 하는 과정을 거치는데, 우선 정상적으로 run이 되어 실행이 되는지 확인하는 것이 먼저기에 아래와 같은 명령어를 사용하여 docker images를 run해보자.

#docker run -p [외부접근포트]:[내부포트] --name [컨테이너 이름] [저장된 이미지 이름]
docker run -p 8080:8080 --name study-container study

해당 명령어를 입력하면 기존에 스프링부트를 run한 것과 같이 터미널에 표시가 되는데

터미널에 이러한 표시 없이 백그라운드에서 실행하고 싶다면 -d 를 추가하여 아래와 같이 실행하면 된다.

#docker run -d -p [외부접근포트]:[내부포트] --name [컨테이너 이름] [저장된 이미지 이름]
docker run -d -p 8080:8080 --name study-container study

그러면 터미널에는 container id만이 표시가 되며, 실행 여부를 확인하고 싶다면 docker desktop에서 확인을 하거나 혹은 아래 명령어를 통해 확인할 수 있다.

docker ps

터미널에서 입력하는 것이 적응되기 전에는 직관적인 docker desktop 사용을 추천한다.

 

 

 

# 컨테이너 ID는 docker ps 명령어를 통해,
# 이미지 ID는 docker images 명령어를 통해 확인할 수 있다.

# 실행 중인 컨테이너 중지
docker stop [컨테이너 ID]

# 컨테이너 삭제
docker rm [컨테이너 ID]

# 이미지 삭제
docker rmi [이미지 ID]

'Dokcer' 카테고리의 다른 글

docker hub 사용법  (0) 2024.08.18
docker compose - springboot와 여러 컨테이너 함께 띄우기  (0) 2024.08.16