728x90
Windows 11에서 Docker 환경으로 개발을 시작하면 Linux 기반 서버(예: Synology DSM)와 동일한 환경에서 개발할 수 있어, 배포 시 발생할 수 있는 환경 차이 문제를 크게 줄일 수 있어요. 아래는 시작하는 데 필요한 기본 단계와 권장 사항입니다.
1. Docker Desktop 설치 및 WSL2 구성
- Docker Desktop 설치:
Docker 공식 웹사이트에서 Docker Desktop을 다운로드하여 설치합니다. Windows 11에서는 Linux 컨테이너를 사용하기 위해 WSL2(Windows Subsystem for Linux version 2)를 사용하는 것이 보통입니다. - WSL2 활성화 및 설정:
Windows 설정 또는 명령 프롬프트를 통해 WSL2를 활성화합니다. 보통 다음 명령어로 설치할 수 있어요:이후 Ubuntu와 같은 Linux 배포판을 설치하고, Docker Desktop의 설정 메뉴에서 WSL2 통합을 활성화하면, Docker Desktop이 해당 배포판과 연동되어 Linux 환경에서 컨테이너를 실행하게 됩니다.
[1] - wsl --install
2. 프로젝트 환경 준비 및 Dockerfile 생성
- 프로젝트 폴더 생성:
Windows에 프로젝트 폴더를 생성한 후, 애플리케이션 코드와 필요한 파일(예: requirements.txt, .env 파일 등)을 준비합니다. - Dockerfile 작성:
배포 환경과 최대한 비슷하도록 Dockerfile을 작성합니다. 예를 들어, Python 3.13을 사용하는 백엔드 프로젝트라면 다음과 같이 작성할 수 있습니다:이렇게 하면 개발 환경과 거의 동일한 Linux 기반 이미지를 만들 수 있어, 이후 배포할 때 환경 차이로 인한 문제를 사전에 발견할 수 있습니다. - FROM python:3.13-slim WORKDIR /app # 의존성 파일을 미리 복사해서 캐시 활용 COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 전체 코드 복사 COPY . . # uWSGI 또는 gunicorn으로 애플리케이션 실행 (예시) CMD ["gunicorn", "myapp:app", "--bind", "0.0.0.0:8000"]
3. Docker 이미지 빌드 및 컨테이너 실행
- 이미지 빌드:
터미널(WLS 터미널이나 Docker Desktop에서 제공하는 터미널)에서 프로젝트 디렉토리로 이동 후, 다음 명령어를 실행하여 이미지를 빌드합니다. - docker build -t myproject:latest .
- 컨테이너 실행:
빌드가 완료되면, 컨테이너를 실행하여 개발 중 서버와의 통신, 포트 매핑 등을 확인합니다.이 명령어는 컨테이너의 8000번 포트를 호스트의 8000번 포트에 매핑해 브라우저 등을 통해 접근할 수 있게 합니다.
[2] - docker run -d -p 8000:8000 myproject:latest
4. 개발과 디버깅을 위한 추가 도구 활용
- 볼륨 마운트:
코드를 수정할 때마다 컨테이너 이미지를 다시 빌드하는 번거로움을 줄이기 위해, 로컬 폴더를 컨테이너 내에 마운트할 수 있습니다. 예를 들어:이렇게 하면 로컬 코드 변경이 바로 컨테이너에 반영되므로, 개발 효율성이 높아집니다. - docker run -d -p 8000:8000 -v "C:\path\to\your\project":/app myproject:latest
- VS Code Remote Containers 확장:
Visual Studio Code를 사용한다면 Remote Containers 확장을 이용하면, 컨테이너 내에서 직접 개발하며 디버깅할 수 있어 더욱 편리합니다. - 로그 및 에러 메시지 확인:
컨테이너 실행 중 발생하는 문제를 빠르게 파악하기 위해, docker logs <컨테이너 ID 또는 이름> 명령어를 사용해 로그를 확인하고, 필요한 경우 디버그 모드를 활성화하세요.
5. Docker Compose 활용 (필요시)
프로젝트가 여러 컨테이너(예: 데이터베이스, 캐시 서버 등)와 함께 동작해야 한다면 docker-compose.yml 파일을 작성해서 관리하는 것이 좋습니다. 예제 파일은 다음과 같습니다:
version: '3.8'
services:
web:
build: .
ports:
- "8000:8000"
volumes:
- ./:/app
db:
image: postgres:latest
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
이렇게 설정해두면 docker-compose up 명령어 하나로 모든 서비스를 동시에 관리하고 실행할 수 있습니다.
결론
Windows 11에서 Docker 환경으로 개발을 시작하면, 개발 초기부터 Linux 기반 환경에 근접한 조건에서 작업할 수 있어 배포 시 환경 차이로 인한 오류(예: Internal Server Error) 발생 가능성을 줄일 수 있습니다. Docker Desktop과 WSL2를 활용하여 이미지를 직접 빌드하고, 볼륨 마운트나 VS Code Remote Containers 등 추가 도구로 개발 효율성을 높이는 것이 핵심입니다.
혹시 이 과정에서 특정 단계의 설정이나 오류 해결에 대해 더 궁금하다면, 더 심화된 내용을 함께 살펴볼 수 있어요. 추가로 CI/CD 자동화나 컨테이너 오케스트레이션 같은 주제도 논의해볼 수 있으니, 필요하시면 말씀해주세요!
728x90
'Docker' 카테고리의 다른 글
Windows‑기반 개발 환경에서 Synology DSM 기반 Linux 서버로 배포할 때, 초기 단계부터 “Internal Server Error”와 같은 문제를 예방할 수 있는 기본 지침 (0) | 2025.06.21 |
---|---|
Docker Compose로 OpenWebUI에서 Gemma 3 모델 구축하기: 단계별 완벽 가이드 (0) | 2025.04.11 |
Docker로 Gemma 3 모델 구축하기: 개발자를 위한 실용적 가이드 (2025) (0) | 2025.03.17 |
Docker 자주 사용되는 명령어 모음 - 전체형식 및 축약형식 (0) | 2025.03.09 |