수. 8월 13th, 2025

🚀 소개
Drupal은 강력한 오픈소스 CMS이지만, 로컬 개발 환경 구성은 번거로운 작업입니다. Docker Compose를 사용하면 1개의 설정 파일로 웹 서버, 데이터베이스, PHP 환경을 한 번에 구성할 수 있습니다. 이 가이드에선 Drupal 10을 기준으로 상세한 구성 방법을 설명합니다.


📦 사전 준비 사항

  • Docker & Docker Compose 설치
    # 설치 확인
    docker --version && docker-compose --version
  • 작업 디렉토리 생성
    mkdir drupal-docker && cd drupal-docker

🛠 Docker Compose 파일 작성

docker-compose.yml 파일을 생성하고 아래 내용을 추가합니다.

version: '3.8'

services:
  # 데이터베이스 서비스 (MySQL)
  db:
    image: mysql:8.0
    container_name: drupal_db
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: drupal
      MYSQL_USER: drupal
      MYSQL_PASSWORD: drupalpass
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - drupal-network

  # Drupal 서비스 (Apache + PHP)
  drupal:
    image: drupal:10-apache
    container_name: drupal_app
    depends_on:
      - db
    ports:
      - "8080:80"  # 호스트 8080 → 컨테이너 80 포트
    volumes:
      - drupal_modules:/var/www/html/modules
      - drupal_profiles:/var/www/html/profiles
      - drupal_themes:/var/www/html/themes
      - drupal_sites:/var/www/html/sites
    environment:
      DRUPAL_DATABASE_HOST: db
      DRUPAL_DATABASE_NAME: drupal
      DRUPAL_DATABASE_USER: drupal
      DRUPAL_DATABASE_PASSWORD: drupalpass
    networks:
      - drupal-network

# 네트워크 & 볼륨 정의
volumes:
  db_data:
  drupal_modules:
  drupal_profiles:
  drupal_themes:
  drupal_sites:

networks:
  drupal-network:
    driver: bridge

🔍 서비스 구성 설명

  1. MySQL 서비스 (db)

    • 공식 MySQL 8.0 이미지 사용
    • 환경 변수로 DB 초기 설정 자동화
    • db_data 볼륨으로 데이터 영구 저장 💾
  2. Drupal 서비스 (drupal)

    • 공식 Drupal 10 + Apache 이미지 사용
    • depends_on으로 DB 시작 후 Drupal 실행
    • 4개의 볼륨으로 사이트 데이터 분리 저장
      • modules, themes: 확장 기능 관리
      • sites: 설정 파일 및 업로드 내용
  3. 네트워크

    • drupal-network로 서비스 간 통신 최적화

⚙️ Drupal 설치 실행

  1. 컨테이너 실행

    docker-compose up -d

    실행 결과 예시

  2. 웹 설치 마법사 접속
    브라우저에서 http://localhost:8080 열기 → Drupal 설치 화면 진입

  3. DB 정보 입력

    • Database type: mysql
    • Host: db (Docker 서비스명)
    • Database name/user/password: docker-compose.yml에 정의한 값 입력

🎯 추가 설정 팁

1. 포트 변경

호스트 포트를 8000으로 변경:

ports:
  - "8000:80"

2. PHP 설정 커스터마이징

php.ini 파일 마운트:

volumes:
  - ./php.ini:/usr/local/etc/php/conf.d/custom.ini

3. Drush 설치 (Drupal CLI)

drupal 서비스에 Drush 추가:

drupal:
  # ... 기존 설정 ...
  command: >
    bash -c "apt-get update && 
    apt-get install -y drush && 
    apache2-foreground"

⚠️ 문제 해결

  • DB 연결 실패 시
    docker-compose logs db로 오류 확인 → 환경 변수 대소문자 오타 체크
  • 퍼미션 오류
    Drupal 컨테이너 내부에서 권한 조정:
    docker exec -it drupal_app chown -R www-data:www-data /var/www/html

결론

Docker Compose로 Drupal 환경을 구성하면:

  • ⏱️ 5분 내 로컬 환경 구축 가능
  • 🔁 동일 설정으로 개발/테스트/운영 환경 일관성 보장
  • 🔄 버전 업그레이드/다운그레이드 용이

> 💡 실제 프로젝트 적용 시
> docker-compose.prod.yml 파일로 운영 환경 설정 분리하고,
> Traefik 연동하여 HTTPS 자동화하는 것을 추천합니다.

최종 구조:

drupal-docker/
├── docker-compose.yml
├── php.ini (옵션)
└── sites/ (마운트 포인트)

🌈 이제 docker-compose up -d 한 줄로 Drupal의 세계를 시작하세요! D

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다