LearnRun
Synology DSM 7, Docker + Django + MariaDB(2) 본문
◈ Contents
django 컨테이너 설정
내부 설정
- django 컨테이너 터미널로 접속합니다.
- ctrl+C를 눌러, 현재 실행되어 있는 django를 종료하고 콘솔 입력창을 활성화할 수 있습니다.
- apt-get install libmysqlclient-dev
mysqlclient를 설치하기위해 라이브러리를 추가합니다. - pip install mysqlclient
mariadb와 연결하기위해, 패키지를 설치합니다.
외부 설정
- django_test 컨테이너를 잠시 끄고, 편집을 진행합니다.
- 편집의 일반설정 탭에서, "고급 설정"을 누른 뒤 해당 창의 "링크"탭을 누릅니다.
- 본 사진과 같이, mariadb_test 컨테이너를 추가하고 별칭을 똑같이 적어줍니다.
- 저장하고, 다시 컨테이너를 작동시킵니다.
django 프로젝트 파일 수정
프로젝트 경로로 들어가 setting.py 를 열어 편집합니다.
DATABASE 정보 수정 (1)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
상기 형식으로 기입된 DATABASES 정보를 아래와 같이 변경해줍니다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
'USER': 'django_id',
'PASSWORD': 'django_pw',
'HOST': 'mariadb_test',
'PORT': '3306',
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
'charset': 'utf8mb4',
'use_unicode': True,
},
}
}
- 모든 값을 서로 다르게 명명해서, 변수 각각의 역할을 쉽게 유추하실 수 있을 것입니다.
- HOST명은 docker 컨테이너 링크에서 작성했던 "별명"을 사용하게 됩니다.
DATABASE 정보 수정 (2)
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
- 하단에 해당 변수 2종 또한 이하와 같이 변경합니다.
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
MariaDB 설정파일 수정
- 메모장을 열어, 이하와 같이 내용을 입력합니다.
[client]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[mysqldump]
default-character-set=utf8mb4
- my.cnf라는 이름으로, 형식을 "모든 파일"로 바꿔 전에 매핑한 docker\django_test\mariadb_test\conf에 저장합니다.
- 본 값이 mariadb의 설정으로서 오버라이딩이 진행되며, 우선 설정값으로 반영됩니다.
- 이전에 DATABASE의 기본 언어를 명령어로 설정했지만, 프로그램 기본 값을 이 과정을 통해 바꿀 수 있습니다.
마치며
이후 전체 컨테이너를 다시 끄고 켠 이후에도 정상적으로 동작하는 것을 확인하였습니다.
언어나 TZ 등의 정보를 바꿔줘서 그런지, 완료 화면도 한글로 바뀌었네요.
동작만 보는 것으로는 조금 모자랍니다. DB와 확실하게 연동되는지는 알 수 없으니까요.
이전에 열어두었던 포트를 활용해 외부 프로그램으로 database를 확인했습니다.
기본적인 테이블들은 물론, 임의로 만든 app_test 내의 temp라는 테이블도 잘 생성되었습니다.
이렇게, synology 상의 docker 앱에서 django+mariadb를 성공적으로 가동했습니다.