Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
Tags
- 코틀린
- 스터디
- 기술면접
- 정처기
- 혼공챌린지
- 코테
- CS
- 카카오코테
- select
- 혼공파
- groupby
- 티스토리챌린지
- 자바
- 자료구조
- java
- Android
- Kotlin
- Til
- SQL
- 알고리즘
- 프로그래머스
- doitandroid
- 인프런
- 안드로이드
- 안드로이드스튜디오
- MySQL
- 정보처리기사
- 혼공단
- join
- 오블완
Archives
- Today
- Total
Welcome! Everything is fine.
[Docker] Dockerfile 개념 및 사용법 본문
728x90
인프런 <비전공자도 이해할 수 있는 Docker 입문/실전> 강의를 토대로 정리한 내용입니다.
🐋 도커파일(Dockerfile)
- 도커파일(Dockerfile) : Docker 이미지를 만들기 위한 파일. 텍스트 파일로 작성되며, 확장자는 Dockerfile이다.
Dockerfile은 다음과 같이 만들 수 있다. 아래 Dockerfile은 강의 실습용으로 간단하게 작성한 것이다.

Dockerfile 명령어
📜Dockerfile 명령어 요약
▪️FROM : 베이스 이미지 생성, 모든 Dockerfile은 FROM으로 시작하며, 태그명을 적지 않을시 최신 버전 사용
▪️COPY : 호스트 파일을 복사해 컨테이너로 전달
▪️RUN : 이미지 생성 과정 중 컨테이너 내에서 명령어 실행
▪️ENTRYPOINT : 컨테이너 시작 시 항상 실행
▪️WORKDIR : 작업 디렉터리 설정
▪️EXPOSE : 컨테이너 포트 공개
Spring Boot 프로젝트 실행 - FROM, COPY, ENTRYPOINT
FROM, COPY, ENTRYPOINT 명령어를 사용해 Spring Boot 프로젝트를 Docker로 실행시켰다.
FROM openjdk:17-jdk
COPY build/libs/*SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
위 Dockerfile에서는 JDK 17 베이스 이미지로 컨테이너를 띄웠다. Spring Boot 프로젝트는 .jar 파일(여러 개의 클래스 파일, 리소스, 메타데이터를 하나로 묶은 압축 파일)을 실행시켜야 하는데, 지금은 컨테이너 환경에서 실행시켜야 한다. 따라서 해당 파일을 컨테이너로 복사해줘야 한다.

- COPY build/libs/*SNAPSHOT.jar app.jar는 build/libs/ 안 SNAPSHOT.jar로 끝나는 파일을 컨테이너 안 app.jar로 복사하겠다는 의미다.
- ENTRYPOINT ["java", "-jar", "/app.jar"]는 컨테이너가 실행될 때 최초로 실행시킬 명령어를 작성한 것이다.
💡.dockerignore 파일을 통해 특정 파일 또는 폴더를 COPY 하지 못하도록 할 수 있다.
Next.js 프로젝트 실행 - RUN, WORKDIR, EXPOSE
다음과 같이 Dockerfile을 작성해 Next.js 프로젝트를 Docker로 실행시켰다. 이번에는 RUN, WORKDIR, EXPOSE 명령어도 함께 사용했다.
FROM node
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build
EXPOSE 3000
ENTRYPOINT [ "node", "dist/main.js" ]
위 Dockerfile에서는 node 베이스 이미지로 컨테이너를 띄웠고, app 이라는 폴더 안에 파일들이 복사되도록 작성했다. 또한 호스트에 있는 모든 파일을 복사해 컨테이너로 가져간다.
- RUN npm install와 RUN npm run build는 컨테이너에서 Next.js를 실행시키고 패키지, 의존성, 라이브러리들을 설치하는 명령어를 실행한다.
- EXPOSE 3000은 있으나 없으나 작동하는 방식에는 영향을 미치진 않고, 3000번 포트에서 실행될 것이라고 문서화하는 역할을 한다.
'Docker' 카테고리의 다른 글
| [Docker] Docker Compose로 여러 컨테이너 띄우기 (0) | 2025.10.08 |
|---|---|
| [Docker] Docker Volume 개념 및 사용법 (0) | 2025.08.22 |
| [Docker] 도커 주요 명령어 정리 (0) | 2025.08.18 |