🚀 소개
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
🔍 서비스 구성 설명
-
MySQL 서비스 (
db
)- 공식 MySQL 8.0 이미지 사용
- 환경 변수로 DB 초기 설정 자동화
db_data
볼륨으로 데이터 영구 저장 💾
-
Drupal 서비스 (
drupal
)- 공식 Drupal 10 + Apache 이미지 사용
depends_on
으로 DB 시작 후 Drupal 실행- 4개의 볼륨으로 사이트 데이터 분리 저장
modules
,themes
: 확장 기능 관리sites
: 설정 파일 및 업로드 내용
-
네트워크
drupal-network
로 서비스 간 통신 최적화
⚙️ Drupal 설치 실행
-
컨테이너 실행
docker-compose up -d
-
웹 설치 마법사 접속
브라우저에서http://localhost:8080
열기 → Drupal 설치 화면 진입 -
DB 정보 입력
- Database type:
mysql
- Host:
db
(Docker 서비스명) - Database name/user/password:
docker-compose.yml
에 정의한 값 입력
- Database type:
🎯 추가 설정 팁
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