[WSL2 실습] Docker Compose와 Nginx 웹서버 구축 완전 가이드

Windows 환경에서 WSL2를 활용하면, 복잡한 리눅스 서버 없이도
Docker + Nginx 웹 서버를 간단히 실습하고 운영할 수 있습니다.

이번 글에서는 WSL2 환경에서 Docker Compose를 이용해 Nginx 웹서버를 구성하는 방법
처음부터 끝까지 단계별로 정리했습니다.


1) 실습 목표 및 환경 개요

이 실습의 목표는 다음과 같습니다 👇

  • WSL2 내부에서 Docker Compose로 Nginx 웹서버를 자동 배포
  • 포트 매핑을 통해 Windows 브라우저에서 접근 가능하도록 설정
  • index.html 수정 → 자동 반영 테스트

💡 실행 후 결과:
브라우저 주소창에 http://localhost:8080 입력 시
“Hello from Nginx running inside WSL2!” 페이지가 표시됩니다.

저는 searXNG를 설치해놔서


2) 사전 준비 (WSL2 + Docker Desktop)

✅ 2-1. WSL2 설치 확인

wsl --status
  • WSL 버전이 2로 되어 있으면 정상입니다.
    (wsl --set-default-version 2로 기본 설정 가능)

✅ 2-2. Docker Desktop 설치

  1. 공식 사이트에서 다운로드
  2. 설치 시 Use WSL 2 based engine 옵션 활성화
  3. 설치 완료 후 → Settings → Resources → WSL Integration
    → Ubuntu(혹은 사용 중인 배포판) 활성화

✅ 2-3. Docker 정상 동작 확인

docker version
docker run hello-world


3) 프로젝트 디렉터리 구성

WSL2 리눅스 내부 홈 디렉터리에서 새 폴더 생성:

mkdir ~/wsl-nginx
cd ~/wsl-nginx

구조는 아래와 같습니다.

wsl-nginx/
├── docker-compose.yml
├── nginx/
│   ├── Dockerfile
│   ├── default.conf
│   └── html/
│       └── index.html

4) Nginx Dockerfile 및 설정 작성

📄 nginx/Dockerfile

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

📄 nginx/default.conf

server {
    listen 80;
    server_name localhost;

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

📄 nginx/html/index.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>WSL2 + Nginx Docker</title>
</head>
<body>
  <h1>Hello from Nginx running inside WSL2!</h1>
</body>
</html>

5) docker-compose.yml 구성

루트 디렉터리(~/wsl-nginx)에 아래 내용 저장:

version: "3.8"

services:
  web:
    build: ./nginx
    container_name: wsl2-nginx
    ports:
      - "8080:80"
    volumes:
      - ./nginx/html:/usr/share/nginx/html
    restart: always

⚙️ 구성 설명

항목설명
buildDockerfile 위치 지정
portsWSL2(리눅스) 80 → Windows 8080 포트로 매핑
volumesHTML 파일 실시간 반영 (수정 시 자동 적용)
restart: always재부팅 시 자동 실행

6) 컨테이너 실행 및 접속 확인

▶️ 실행 명령

docker-compose up -d

정상 실행 시:

Creating network "wsl-nginx_default" with the default driver
Building web
Successfully built 9abce1234
Successfully tagged wsl-nginx_web:latest
Creating wsl2-nginx ... done

🌐 접속 확인

  • Windows 브라우저에서
    👉 http://localhost:8080 접속
  • 화면에 아래 문구가 보이면 성공: Hello from Nginx running inside WSL2!

7) 수정·재배포 및 로그 확인

🔄 HTML 수정 테스트

nginx/html/index.html 파일의 내용을 변경해보세요.

<h1>Welcome to My WSL2 Nginx Server 🚀</h1>

브라우저 새로고침 → 즉시 반영됩니다.
(volumes 설정 덕분에 실시간 반영)

📋 로그 확인

docker logs wsl2-nginx

🧹 중지 및 제거

docker-compose down

8) 마무리 및 확장 아이디어

이제 여러분의 WSL2 환경은
단순한 리눅스 터미널이 아닌, 완전한 웹 개발 서버가 되었습니다.

🚀 다음으로 도전해볼 만한 확장 과제:

  1. Nginx + PHP-FPM + MariaDB 3단 구성 실습
  2. Docker Compose로 WordPress 실행하기
  3. Nginx Reverse Proxy + Node.js 백엔드 연동
  4. SSL 인증서(Let’s Encrypt) 적용

✅ 정리하며

단계핵심 내용
WSL2 환경 준비Windows Terminal + Docker Desktop 연동
프로젝트 구성Dockerfile, Compose, HTML 작성
실행 및 테스트docker-compose up -dhttp://localhost:8080
확장 가능성PHP, Node.js, DB 등 추가 가능

WSL2를 활용하면, 윈도우에서도 리눅스 기반의 실무 서버 환경을 그대로 재현할 수 있습니다.
이제 가상머신 없이도 로컬에서 클라우드급 인프라 실습이 가능하죠.