Step 1. Dockerfile 작성
실습 프로젝트 루트에

Dockerfile을 생성하고 다음과 같이 작성한다.
FROM nginx:latest
COPY html /usr/share/nginx/html
COPY nginx/nginx.conf /etc/nginx/nginx.conf
COPY static-files /usr/share/nginx/static-files
이제 하나씩 이해해 보자.
FROM nginx:latest
Nginx 공식 이미지를 기반으로 새로운 이미지를 만들겠다라는 의미이다.
COPY html /usr/share/nginx/html
COPY는 이미지를 만들 때 파일을 이미지 내부로 복사한다는 것으로
로컬 머신(Host)의 실습용 프로젝트 폴더에 있는 html 폴더를 Docker image 내부 /usr/share/nginx/html에 복사한다는 의미이다.
여기서 중요한 점은 이전의 -v를 통해 Mount하는 것과는 완전히 다르다는 것이다.
Mount하는 것은 로컬 머신에 있는 폴더를 컨테이너가 같이 바라보는 것이고
COPY는 이미지를 만들 때 파일을 이미지 내부로 복사하는 것이다.
COPY nginx/nginx.conf /etc/nginx/nginx.conf
로컬 머신의 nginx/nginx.conf를 도커 이미지의 /etc/nginx/nginx.conf에 복사한다는 것으로
컨테이너가 실행될 때 기본 Nginx 설정이 아닌 사전에 작성한 Nginx 설정을 사용하게 된다.
COPY static-files /usr/share/nginx/static-files
로컬 머신의 static-files 폴더를 도커 이미지의 /usr/share/nginx/static-files에 복사한다.
Step 2. 이미지 빌드
터미널을 열고 프로젝트 루트에서 다음 명령어를 실행한다.
docker build -t my-nginx:1.0 .

명령어의 각 부분을 이해해보면
docker build : Dockerfile을 이용하여 Image 생성
-t my-nginx:1.0 : 생성하는 이미지에 이름과 태그 지정
. : Build Context를 현재 디렉터리로 지정한다는 것으로 현재 디렉터리인 nginx-lab/ 전체가 Build Context가 된다.
생성된 이미지를 확인해보면

의도한 이미지가 만들어진 것을 볼 수 있다.
Step 3. 생성한 이미지로 컨테이너 실행 후 브라우저에서 확인
docker run -d \
--name my-nginx \
-p 8080:80 \
my-nginx:1.0
여기서 중요한 점은 이전 실습에서는 -v 옵션을 통해
HTML 폴더, nginx.conf, static-files 폴더 등을 외부에서 Mount했지만
이제는 해당 폴더들이 이미지 자체에 포함되어 있다는 점이다.
그리고 브라우저에서 확인해보면



정상적으로 작동하는 것을 확인할 수 있다.
여기서 중요한 점은 위와 같이 웹 요청에 대한 폴더와 파일 들은 이미지 자체에 복사된 것이기 때문에
로컬 머신(Host)에서 수정하더라도 컨테이너에 반영되지 않는다.
만약 로컬 머신에서 수정한 파일이 컨테이너에 반영되길 원한다면 기존 컨테이너는 제거하고
수정한 파일을 기반으로 이미지를 다시 빌드하여 컨테이너를 생성해야 한다.
'개발 > Docker' 카테고리의 다른 글
| [Docker] Reverse Proxy (0) | 2026.08.12 |
|---|---|
| [Docker] Docker Compose (0) | 2026.08.11 |
| [Nginx] alias 설정 (0) | 2026.08.10 |
| [Nginx] location 설정 (0) | 2026.08.10 |
| [Docker] Nginx 설정 파일인 nginx.conf 이해하기 (0) | 2026.08.06 |