이번 글에서는 시놀로지 Docker에서 MariaDB를 설정하고, 별도로 구축한 Ubuntu 기반 Django 컨테이너와 연동하는 방법을 정리합니다. Django의 settings.py에 데이터베이스 연결 설정을 적용하는 방법까지 단계별로 안내합니다.
1. 시놀로지 Docker에서 MariaDB 설치
먼저 Synology DSM에서 Docker 패키지를 실행합니다.
- 레지스트리 메뉴에서 MariaDB를 검색합니다.
- 공식 이미지 또는 mariadb:latest 태그를 다운로드합니다.
- 이미지 메뉴에서 다운로드된 MariaDB 이미지를 선택하고 컨테이너 생성을 진행합니다.
생성 단계에서 다음 설정을 적용합니다.
- 포트 매핑:
호스트 3307 → 컨테이너 3306 (이미 사용 중일 수 있으므로 3307 권장) - 환경 변수:
MYSQL_ROOT_PASSWORD→ root 비밀번호 설정TZ=Asia/Seoul - 볼륨 매핑:
/var/lib/mysql을 NAS 공유폴더로 연결하여 데이터 유지
컨테이너 생성 후 실행하면 MariaDB가 정상적으로 작동합니다.


포트 : 기본값입니다. 그런데, 워드프레스와 포트가 동일하다고 나올 수 있습니다. 저의 경우 장고를 먼저 설정하고 워드프레스는 3308로 했습니다.
볼륨: data 폴더를 ‘시놀로지 파일스테이션’에 미리 생성해 두고, mariadb 도커 내부와 연결해야 합니다. 역시 나중에 컨테이너 업데이트 재설치시 저장된 데이터 다 사라집니다. conf 폴더에는 아래와 같은 파일을 만들어서 넣어두시면, 기본 설정은 설정대로 둔 상태에서 외부에서 나만의 설정으로 덮어쓸 수 있습니다. 이렇게 하면 mariadb 도커 업데이트, 재설치해도 계속 유지할 수 있습니다. 이것을 잘 이해해야 합니다. 구글 드라이브에서 코딩할 때 마운트해서 외부 데이터 불러와서 연습하다가 브라우저 닫으면 작업했던 것 다 사라지는 것과 동일한 현상입니다. usb메모리 꽂아서 작업하다가 usb메모리 빼면 작업하던거 내 PC에서 사라지는 것과 같다고 보시면 됩니다. 그러니깐 내 pc에도 usb와 동일한 폴더를 만들어서 항상 유지한다고 생각하면 비슷합니다.

비번: 개인적이라 지웠습니다.
네트워크 : 역시 브릿지
2. MariaDB 데이터베이스 및 계정 생성
DBeaver, HeidiSQL 등 클라이언트나 Docker 내부 터미널에서 접속합니다.
docker exec -it mariadb bash
mysql -u root -p
필요한 데이터베이스와 사용자 계정을 생성합니다.
CREATE DATABASE django_db DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'django_user'@'%' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON django_db.* TO 'django_user'@'%';
FLUSH PRIVILEGES;
@'%' 설정은 외부 컨테이너 접근을 허용하는 항목입니다.
3. Ubuntu Django 컨테이너에서 MariaDB 접속
Ubuntu 기반 Django Docker 컨테이너를 준비합니다. 컨테이너 내부에서 pymysql 또는 mysqlclient를 설치합니다.
pip install pymysql
Django 프로젝트의 settings.py에 데이터베이스 연결 정보를 설정합니다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
'USER': 'django_user',
'PASSWORD': '비밀번호',
'HOST': '시놀로지 NAS IP 주소',
'PORT': '3307',
'OPTIONS': {
'charset': 'utf8mb4',
}
}
}
여기서 HOST에는 NAS의 내부 IP를 입력합니다. 예: 192.168.0.10
Docker 네트워크 연결 구조에 따라 같은 브릿지 네트워크 안이라면 컨테이너 이름 사용도 가능합니다.
4. 마이그레이션 및 연결 확인
Django에서 데이터베이스 연결을 검증합니다.
python manage.py migrate
오류 없이 실행된다면 MariaDB와 Django 연결에 성공한 것입니다.
관리자 생성도 가능합니다.
python manage.py createsuperuser
5. 방화벽 및 권한 체크
연결이 되지 않는다면 아래를 확인합니다.
- DSM 방화벽에서 3307 포트 허용 여부
- MariaDB 사용자 권한 설정 확인
- Docker 네트워크 브리지 구성
필요 시 docker inspect로 IP와 네트워크 정보를 확인할 수 있습니다.
마무리
시놀로지 NAS의 Docker를 활용하면 안정적인 데이터베이스 서버를 손쉽게 구축할 수 있습니다. Ubuntu 기반의 Django 컨테이너와 연동하면 NAS를 활용한 강력한 웹 서비스 환경이 완성됩니다. 이 방식은 데이터 백업과 재배포가 용이해 개발 및 운영 효율성도 크게 향상됩니다.