Docker - 웹 서버 빌드하기

안녕하세요, код 작성에 관심이 있는 여러분! 오늘 우리는 Docker와 웹 서버의 세계로 흥미로운 여정을 떠납니다. 여러분의 친절한 이웃 컴퓨터 선생님이자 저는 이 모험을 단계별로 안내해드리겠습니다. 프로그래밍에 처음이라면 걱정하지 마세요 - 기본부터 시작하여 차근차근 올라갈 테니까요. 그럼 커피 한 잔 (또는 여러분의 좋아하는 음료)을 챙기고, 이제 시작해보겠습니다!

Docker - Web Server

Docker와 웹 서버 이해하기

Docker는 무엇인가요?

새로운 집으로 이사할 때, 무작위로 상자에 담는 대신, 상자에 레이블을 붙여 소지품을 정리하는 것을 상상해보세요. Docker가 소프트웨어에 대해 하는 일이 바로 그거입니다! Docker는 애플리케이션과 그 의존성을 표준화된 단위인 컨테이너로 포장합니다. 이렇게 하면 다양한 환경에서 애플리케이션을 쉽게 이동, 배포, 실행할 수 있습니다.

웹 서버는 무엇인가요?

웹 서버는 식당의 디지털 웨이터와 같습니다. 브라우저에 웹사이트 주소를 입력할 때, 웹 서버는 요청을 받아들여 적절한 웹 페이지를 검색하고 제공합니다. 이는 인터넷의 기반을 이루며, 언제든지 웹사이트에 접근할 수 있도록 보장합니다.

Docker로 간단한 웹 서버 만들기

단계 1: 환경 설정

먼저 컴퓨터에 Docker가 설치되어 있는지 확인해보겠습니다. 아직 설치하지 않았다면, 공식 Docker 웹사이트로 이동하여 운영 체제에 맞는 설치 가이드를 따라서 설치하세요.

단계 2: 간단한 HTML 파일 만들기

먼저 웹 서버가 표시할 간단한 HTML 파일을 만들어보겠습니다. 다음 내용으로 index.html이라는 새로운 파일을 생성하세요:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Docker Web Server</title>
</head>
<body>
<h1>Hello, Docker World!</h1>
<p>This is a simple web page served by Docker.</p>
</body>
</html>

이 HTML 파일은 기본적인 헤딩과 문단을 생성하여 웹 서버가 방문자에게 전달할 간단한 편지와 같습니다.

단계 3: Dockerfile 만들기

이제 Dockerfile을 만들어보겠습니다. 이는 Docker가 웹 서버 컨테이너를 빌드하는 방법을 알려주는 레시피와 같습니다. 다음 내용으로 Dockerfile (확장자 없음)을 생성하세요:

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html

이를 해독해보면:

  • FROM nginx:alpine: Docker가 Alpine Linux 기반의 공식 Nginx 이미지를 시작점으로 사용하도록 지정합니다.
  • COPY index.html /usr/share/nginx/html/index.html: 우리의 HTML 파일을 Nginx가 웹 페이지를 찾는 기본 디렉토리로 복사합니다.

단계 4: Docker 이미지 빌드하기

이제 Dockerfile이 준비되었으므로, Docker 이미지를 빌드해보겠습니다. 터미널을 엽치고, Dockerfile과 index.html이 있는 디렉토리로 이동한 후 다음 명령어를 실행하세요:

docker build -t my-web-server .

이 명령어는 Docker에게 Dockerfile을 기반으로 이미지를 빌드하고 "my-web-server"로 태그하도록 지시합니다. 끝에 있는 점은 Docker가 현재 디렉토리에서 Dockerfile을 찾도록 합니다.

단계 5: Docker 컨테이너 실행하기

이제 거의 다 왔습니다! Docker 컨테이너를 실행해보겠습니다:

docker run -d -p 8080:80 my-web-server

이 명령어는 다음을 수행합니다:

  • -d: 컨테이너를 디etached 모드로 실행하여 배경에서 실행합니다.
  • -p 8080:80: 컴퓨터의 포트 8080을 컨테이너의 포트 80으로 매핑합니다.
  • my-web-server: 우리의 Docker 이미지 이름입니다.

웹 서버 테스트하기

이제 진짜 시험의 시간입니다! 브라우저를 엽치고 http://localhost:8080에 접속하세요. "Hello, Docker World!" 메시지가 표시되어야 합니다. 축하드립니다! 여러분은 Docker를 사용하여 웹 서버를 생성하고 배포했습니다!

고급 주제

Nginx 설정 맞춤화

서버의 행동을 맞춤화하고 싶다면 어떻게 하나요? Nginx 설정을 수정하여 이를 할 수 있습니다. 맞춤형 Nginx 설정 파일 nginx.conf을 생성해보겠습니다:

server {
listen 80;
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html;
}

location /api {
return 200 '{"message": "This is a sample API response"}';
add_header Content-Type application/json;
}
}

이 설정 파일은 두 가지 일을 합니다:

  1. HTML 파일을 기본적으로 제공합니다.
  2. /api에 간단한 API 엔드포인트를 생성하여 JSON 응답을 반환합니다.

이제 Dockerfile을 수정하여 이 설정을 사용하도록 합니다:

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html
COPY nginx.conf /etc/nginx/conf.d/default.conf

Docker 이미지를 다시 빌드하고 실행합니다. 이제 http://localhost:8080/api에 접속하면 JSON 응답을 볼 수 있습니다!

결론

이제 여러분은 Docker와 웹 서버의 기본 개념에서 시작하여 맞춤형 웹 서버 컨테이너를 만드는 것까지 여정을 마쳤습니다. 기억하시라, 이것이야말로 시작에 불과합니다. Docker와 웹 개발의 세계는 방대하고 흥미롭며, 탐구할 수 있는 무한한 가능성을 제공합니다.

여기서 배운 방법을 요약한 표를 제공합니다:

방법 설명
docker build Dockerfile을 기반으로 Docker 이미지를 빌드합니다
docker run Docker 컨테이너를 생성하고 시작합니다
docker ps 실행 중인 Docker 컨테이너를 목록화합니다
docker stop 실행 중인 Docker 컨테이너를 중지합니다
docker rm Docker 컨테이너를 제거합니다

계속 연습하고 탐구하며, 코드 작성을 즐기세요! 누구나 다음 큰 웹 애플리케이션이 Docker 컨테이너 몇 개 밖에 떨어져 있지 않을 것입니다. 다음 만남까지, 즐겁게 코딩하세요!

Credits: Image by storyset