본문 바로가기
SW 개발/Docker

Docker-compose를 사용해서 Python+MySql 개발환경 만들기 (VSCode)

by Dblclick 2024. 8. 20.

개요

개발 환경을 손쉽게 구축하고 유지보수하기 위해 DockerDocker-compose를 활용하면 매우 편리하다. 이 글에서는 Windows 10 환경에서 Python + MySQL 개발 환경을 Docker-compose로 설정하는 방법을 소개한다. 또한, VSCode를 활용하여 컨테이너 내에서 개발하는 방법도 다룬다.

1. 사전 준비

본격적인 설정에 앞서, 아래 프로그램이 설치되어 있어야 한다.

2. 프로젝트 폴더 생성

먼저, 개발 환경을 구성할 폴더를 생성한다.

mkdir PythonMySqlDev
cd PythonMySqlDev

이후, **PythonMySqlDev 폴더를 우클릭 → 'VSCode에서 열기'**를 선택한다.

3. Docker 설정 파일 생성

프로젝트 루트 폴더(PythonMySqlDev)에서 Dockerfiledocker-compose.yaml을 생성한다.

3.1 Dockerfile 작성

Dockerfile은 Python 실행 환경을 구성하는 역할을 한다. VSCode에서 Dockerfile을 생성하고 아래 내용을 입력한다.

# Debian 12 기반 Python 3.12.5 이미지 사용
FROM python:3.12.5-slim-bookworm

# 이미지 정보를 추가
LABEL maintainer="CnCSoft"

# Python 출력 버퍼링 비활성화
ENV PYTHONUNBUFFERED=1

# 애플리케이션 코드 복사
COPY ./app /app

# 작업 디렉토리 설정
WORKDIR /app

# 8000번 포트 노출
EXPOSE 8000

# 가상환경 설정 및 패키지 설치
RUN python -m venv venv && \
    pip install --upgrade pip

CMD [ "/bin/bash" ]

위 파일의 주요 역할:

  • Python 3.12.5 이미지 기반으로 환경 구성
  • /app디렉터리에 애플리케이션 코드 복사
  • 8000번 포트 노출
  • 가상환경(venv) 설정 및 pip 업그레이드

3.2 docker-compose.yaml 작성

docker-compose.yaml 파일을 생성하고 아래 내용을 추가한다.

services:
  db:
    container_name: myDB
    image: mysql
    volumes:
      - ./dbPyMysql:/var/lib/mysql
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=your_password
    networks:
      - mydev
  
  python_dev:
    build: .
    container_name: myPython
    image: python-dev
    ports:
      - "5001:5000"
    tty: true
    stdin_open: true
    networks:
      - mydev

networks:
  mydev:

주요 설정:

  • db 서비스: MySQL 컨테이너 생성 및 데이터 영구 저장(volumes 사용)
  • python_dev 서비스: Python 애플리케이션 실행
  • tty: true, stdin_open: true 추가하여 Python 컨테이너가 종료되지 않도록 설정
  • networks: 두 컨테이너가 같은 네트워크에서 통신 가능하도록 설정

VSCode : docker-compose.yaml

 

4. 컨테이너 실행

이제 VSCode의 터미널에서 아래 명령어를 실행하여 컨테이너를 빌드하고 실행한다.

docker-compose up -d

컨테이너 실행

실행 확인

컨테이너가 정상적으로 실행되었는지 확인하려면 아래 명령어를 사용한다.

docker ps

컨테이너 실행 확인

 

또한, Docker Desktop에서 실행 중인 컨테이너를 확인할 수도 있다. 컨테이버 뷰에서는 1개의 컨테이너만 보인다.

Docker Desktop - 컨테이너 뷰

위의 화면에서 pythonmysqldev 를 클릭해서 들어가면 2개의 컨테이너가 실행 중인 것이 보인다.

2개의 컨테이너 확인

 

5. VSCode에서 컨테이너에 연결하여 개발하기

  1. VSCode에서 Ctrl + Shift + P를 누른다.
  2. Dev Containers: Attach to Running Container... 선택
  3. myPython 컨테이너를 선택하면, 새로운 VSCode 창이 열리며 컨테이너 내부에서 작업할 수 있다.

이제 컨테이너 환경에서 Python과 MySQL을 활용한 개발을 진행할 수 있다.

VSCode에서 컨테이너 연결

 

새로 열린 파이썬 컨테이너에 연결된 VSCode 화면

파이썬 컨테이너에 연결된 VSCode 화면

 

처음 열었던 VSCode의 Docker 파일이 저장된 곳에는 mysql 컨테이너의 db파일이 호스트에 저장되도록 마운트 시킨 dbPyMysql 폴더가 docker-compose up 실행 이후에 새로 생겼다.

호스트에 저장하도록 마운트시킨 폴더

 

6. 마무리

이 글에서는 Docker-compose를 활용한 Python + MySQL 개발환경 구성 방법을 살펴보았다.

  • Dockerfile을 사용하여 Python 실행 환경 구성
  • docker-compose.yaml로 Python과 MySQL 컨테이너 정의
  • VSCode에서 컨테이너 내부에서 개발하는 방법

이 설정을 활용하면 개발 환경을 빠르게 구성하고, OS에 상관없이 동일한 환경을 유지할 수 있다. 이제 직접 따라 해 보면서 Docker 개발 환경을 구축해 보자! 🚀

 

댓글