LearnRun

Synology DSM 7, Docker + Django + MariaDB(2) 본문

Synology(NAS)

Synology DSM 7, Docker + Django + MariaDB(2)

PROMPT_ 2023. 1. 21. 23:05

◈  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를 성공적으로 가동했습니다.

     

     

    ‌ ‌ ‌
    Comments