Docker hub에 있는 이미지가 아닌 내가 만드는 이미지!
즉, Dockerfile이란 Docker image를 만들 수 있는 파일
Docker container에 특정 초기 이미지를 기반으로 추가적인 세팅을 할 수 있게 해준다.
-> 특정 초기 이미지가 곧 base image이다FROM [이미지명 : 태그명]
Host 컴퓨터에 있는 파일을 복사하여 Container로 전달한다.
COPY [Host 컴퓨터에 있는 복사할 파일 경로] [컨테이너에서 파일이 위차할 경로]폴더 안에 있는 모든 파일을 복사하고 싶다면 "."을 활용하고 컨테이너에서 파일이 위치할 경로에는 "/"를 뒤에 붙여야한다.
예시
COPY . /my_dir/와일드카드도 사용할 수 있다
예시
COPY *.txt /text_files/(txt로 끝나는 파일을 모두 선택한 것임)
ENTRYPOINT와 RUN을 착각하는 사람이 많다고 한다.
ENTRYPOINT는 컨테이너가 실행될 때 실행되는 명령어이다ENTRYPOINT [명령문]RUN은 이미지를 빌들할 때 명령을 실행시키는 명령어이다
RUN [명령문]WORKDIR
WORKDIR로 작업 디렉터리를 전환하면 이후 등장하는 모든 명령문은 해당 디렉터리를 기준으로 실행된다
WORKDIR [작업 디렉토리로 사용할 절대 경로]
아주 간단하게 만들었다 안에
localhost:8080 으로 접근하면 "Docker yum yum ~"이 나오게 했다
먼저 spring boot 프로젝트를 build 시켜야한다
./gradlew clean build그러면 build/libs/에 ~ SHAPSHOT.jar 파일을 볼 수 있다
이 파일을 활용하여 아래 코드를 작성한다#base image FROM openjdk:17-jdk # 프로젝트를 실행시키기 위한 jar 파일을 컨테이너 내부로 복사하는 것임 COPY /build/libs/*SNAPSHOT.jar /app.jar # 컨테이너 실행시 프로젝트 실행! ENTRYPOINT ["java", "-jar", "/app.jar"]프로젝트 바로 아래 Dockerfile을 만들고 위 코드를 넣어라
#이미지 빌드 docker build -t springboot_server . #컨테이너 생성 및 실행 docker run -d -p 8080:8080 springboot_server
localhost:8080에 들어가면 잘 나오는 것을 볼 수 있다.
docker ps로도 확인 가능
`