이재홍의 언제나 최신 Docker - Unit 11.3 MySQL 데이터베이스 설정하기

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

Docker로 Django 애플리케이션 구축하기

이재홍 http://www.pyrasis.com

MySQL 데이터베이스 설정하기

MySQL 데이터베이스 Dockerfile은 따로 작성하지 않고, 공식 이미지인 mysql/5.7을 사용하도록 하겠습니다.

다음과 명령으로 네트워크와 볼륨, MySQL 데이터베이스 컨테이너를 생성합니다.

$ cd exampleapp
~/exampleapp$ sudo docker network create django-network
~/exampleapp$ sudo docker volume create mysql-data
~/exampleapp$ sudo docker run -d --name db \
    -p 3306:3306 \
    --network django-network \
    -v mysql-data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=examplepassword \
    -e MYSQL_DATABASE=exampleapp \
    mysql:5.7

이번 예제에서는 앞에서 생성한 Django 앱에 내장된 ORM(Object Relational Mapping)을 사용해서 테이블을 생성해보겠습니다.

~/exampleapp$ MYSQL_HOST="127.0.0.1" MYSQL_ROOT_PASSWORD="examplepassword" python3 manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying sessions.0001_initial... OK
  • MYSQL_HOST에는 127.0.0.1을 설정하여 앞에서 만든 MySQL 데이베이트 컨테이너에 연결할 수 있도록 합니다.
  • MYSQL_ROOT_PASSWORD에는 docker run 명령에서 -e 옵션으로 지정한 값을 넣어줍니다. 여기서는 examplepassword입니다.

필요한 테이블들이 생성되었습니다.

다음 명령으로 Django 앱을 실행합니다.

~/exampleapp$ MYSQL_HOST="127.0.0.1" MYSQL_ROOT_PASSWORD="examplepassword" python3 manage.py runserver 0.0.0.0:8000
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
October 10, 2022 - 05:20:01
Django version 4.1.2, using settings 'exampleapp.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

웹 브라우저에서 http://<컨테이너 IP 주소 또는 도메인>:8000으로 접속해봅니다(Docker Desktop에서 실행했다면 http://127.0.0.1:8000입니다).

The install worked successfully! Congratulations! 화면이 표시되면 Django 앱이 정상적으로 실행된 것입니다. 확인이 끝났으면 Ctrl+C를 눌러 Django 앱을 종료합니다.

그리고 데이터베이스 컨테이너도 삭제합니다.

$ sudo docker rm -f db

저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

2022-10-03