DevOps 환경에서 애플리케이션을 배포하고 관리하는 데 있어 Docker는 매우 유용한 도구입니다. 이번 글에서는 Docker를 활용하여 Nginx 기반의 미니 웹 서버를 구축하는 방법을 살펴보겠습니다. Nginx는 경량화된 웹 서버로, 정적 파일 제공과 리버스 프록시 서버로 많이 사용됩니다. 이 글을 통해 Docker와 Nginx를 이용한 간단한 웹 서버 구축 과정을 단계별로 알아보겠습니다.

1. Docker 설치하기

Docker를 사용하기 위해서는 먼저 Docker를 설치해야 합니다. 운영체제에 따라 설치 방법이 다르므로 아래 링크를 통해 설치 가이드를 참고하시기 바랍니다.

설치가 완료되면, 아래 명령어를 통해 Docker가 정상적으로 설치되었는지 확인합니다.

docker --version

정상적으로 설치되었다면, Docker 버전 정보가 출력됩니다.

2. Dockerfile 작성하기

이제 Nginx 서버를 위한 Docker 이미지를 만들기 위해 Dockerfile을 작성합니다. Dockerfile은 Docker 이미지를 만드는 데 필요한 모든 명령어를 포함하는 파일입니다. 프로젝트 디렉토리를 만들고 그 안에 Dockerfile을 생성합니다.

mkdir my-nginx-server
cd my-nginx-server
touch Dockerfile

이제 아래 내용을 Dockerfile에 추가합니다.

FROM nginx:alpine

# 컨테이너에서 사용할 포트를 설정합니다.
EXPOSE 80

# HTML 파일을 Nginx의 기본 웹 루트로 복사합니다.
COPY ./html /usr/share/nginx/html

3. HTML 파일 만들기

이제 Nginx 서버에서 서비스할 HTML 파일을 생성해야 합니다. html이라는 폴더를 만들고 그 안에 index.html 파일을 추가합니다.

mkdir html
touch html/index.html
index.html 파일에 아래 내용을 추가합니다.
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Nginx Server</title>
</head>
<body>
    <h1>환영합니다! Nginx 기반 미니 웹 서버입니다.</h1>
</body>
</html>

4. Docker 이미지 빌드하기

이제 Dockerfile을 기반으로 Docker 이미지를 빌드합니다. 다음 명령어를 실행하여 이미지를 생성합니다.

docker build -t my-nginx-image .

명령어가 성공적으로 실행되면, my-nginx-image라는 이름의 Docker 이미지가 생성됩니다.

5. Docker 컨테이너 실행하기

이제 생성한 Docker 이미지를 기반으로 컨테이너를 실행할 차례입니다. 다음 명령어를 통해 컨테이너를 실행합니다.

docker run -d -p 8080:80 --name my-nginx-container my-nginx-image

위 명령어에서 -d 플래그는 컨테이너를 백그라운드에서 실행하도록 하고, -p 플래그는 로컬 머신의 8080 포트를 컨테이너의 80 포트에 매핑합니다.

6. 웹 서버 확인하기

컨테이너가 정상적으로 실행되었다면, 웹 브라우저를 열고 http://localhost:8080 주소로 접속해보세요. 그럼 다음과 같은 환영 메시지를 확인할 수 있습니다.

환영합니다! Nginx 기반 미니 웹 서버입니다.

7. 컨테이너 관리

운영 중에 컨테이너를 관리할 필요가 있습니다. 아래 명령어로 컨테이너 상태를 확인할 수 있습니다.

docker ps

컨테이너를 중지하고 싶다면 다음 명령어를 사용하세요.

docker stop my-nginx-container

컨테이너를 삭제할 때는 아래 명령어를 사용합니다.

docker rm my-nginx-container

마무리

이번 글에서는 Docker를 사용하여 Nginx 기반의 미니 웹 서버를 구축하는 과정을 살펴보았습니다. Docker를 통해 애플리케이션을 컨테이너화함으로써 배포 및 관리가 훨씬 수월해집니다. 이제 여러분도 Docker와 Nginx를 활용하여 자신만의 웹 서버를 손쉽게 만들어 보세요. 추가적으로, 이 설정을 바탕으로 더 많은 기능을 추가하거나 다른 서비스를 통합해 볼 수 있습니다.