🧱 Dockerfile 작성법 완전 정복
나만의 이미지를 만드는 첫걸음, 도커파일 제대로 배우기!
📌 Dockerfile이란?
Dockerfile은 나만의 Docker 이미지를 만들기 위한 설계도입니다.
즉, 어떤 OS를 기반으로 하고, 어떤 파일을 복사하고, 어떤 패키지를 설치하며, 어떤 명령을 실행할지를 하나하나 적어놓은 스크립트 파일입니다.
Dockerfile을 사용하면 다음과 같은 이점이 있습니다:
- 앱 실행 환경을 자동화
- 배포 가능한 이미지 생성
- 팀원들과 동일한 개발 환경 공유 가능
📂 Dockerfile 기본 구조
다음은 가장 기본적인 Node.js 애플리케이션을 위한 Dockerfile 예시입니다.
# 베이스 이미지 지정
FROM node:20
# 작업 디렉토리 설정
WORKDIR /app
# 로컬 파일을 컨테이너로 복사
COPY . .
# 의존성 설치
RUN npm install
# 앱 실행 명령
CMD ["node", "app.js"]
각 명령어의 의미를 하나씩 살펴보겠습니다.
🧩 Dockerfile 명령어 설명
✅ FROM
이미지의 기반이 되는 OS나 언어 환경을 정의합니다.
예: FROM node:20 → Node.js 20버전 사용
✅ WORKDIR
컨테이너 내부에서 작업 디렉토리를 지정합니다.
예: WORKDIR /app
✅ COPY
호스트(로컬)의 파일을 컨테이너 안으로 복사합니다.
예: COPY . . → 현재 폴더의 모든 파일을 컨테이너로 복사
✅ RUN
이미지 빌드 중 실행할 명령어를 지정합니다.
예: RUN npm install → 의존성 설치
✅ CMD
컨테이너 실행 시 기본적으로 수행할 명령어입니다.
예: CMD ["node", "app.js"]
⚠️ CMD는 컨테이너 실행 시 오버라이딩 될 수 있으며, ENTRYPOINT와 혼용해서 사용할 수도 있습니다.
🧪 실습 예시: 간단한 Express 앱 컨테이너화
- app.js 파일 작성:
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Hello from Docker!'));
app.listen(3000, () => console.log('App running on port 3000'));
- package.json 생성:
{
"name": "docker-express",
"version": "1.0.0",
"main": "app.js",
"dependencies": {
"express": "^4.18.2"
}
}
- Dockerfile 작성 (위 내용 활용)
- 이미지 빌드:
docker build -t docker-express-app .
- 컨테이너 실행:
docker run -p 3000:3000 docker-express-app
브라우저에서 http://localhost:3000 접속 시 “Hello from Docker!” 출력 확인!
🧭 작성 팁 & 주의사항
- .dockerignore 파일을 반드시 설정하세요. (예: node_modules, .git 등 무거운 폴더 제외)
- 한 Dockerfile 안에서 너무 많은 RUN 명령을 쪼개지 말고, &&로 연결해 이미지 용량을 줄이세요.
- 개발용과 운영용 Dockerfile을 분리하면 관리가 편해집니다.
- ARG, ENV 등을 활용하면 유동적인 이미지 생성도 가능합니다.
🚀 Dockerfile로 시작하는 자동화의 세계
Dockerfile을 제대로 이해하고 활용하면 단순한 앱 실행을 넘어서 CI/CD 파이프라인, 배포 자동화, 멀티 플랫폼 대응까지도 가능해집니다.
초보 단계에서는 예제 중심으로 연습해보고, 점차 멀티스테이지 빌드나 캐싱 전략 등 고급 기능으로 확장해보세요.
Docker 컨테이너 기본 명령 오버라이딩 이해하기
🛠 Docker 컨테이너 기본 명령 오버라이딩 이해하기CMD, ENTRYPOINT, docker run 명령어를 완벽히 이해하자!🚀 컨테이너를 실행할 때 '기본 동작'이란?Docker에서 이미지를 기반으로 컨테이너를 실행할 때
jjig810906.tistory.com
'Program' 카테고리의 다른 글
Docker 이미지 빌드부터 태그, 퍼블리시까지 완전 정복 (0) | 2025.06.05 |
---|---|
나만의 Docker 이미지 만들고 Docker Hub에 올리기 (0) | 2025.06.05 |
Docker 컨테이너 기본 명령 오버라이딩 이해하기 (0) | 2025.06.05 |
Docker Hub API 최신 변경 로그 정리 (3) | 2025.06.05 |
Docker로 개발하기: 컨테이너 기반 개발의 시작 (0) | 2025.06.05 |