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