0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

docker-composeでnginx-django-mysqlを構築した(ハンズオン)

Last updated at Posted at 2022-10-16

やりたいこと

  • nginx-django-mysqlを使った環境構築をdocker-composeで可能にする
  • Python(Django)に限らず可能な限りどの言語でも使えるコンテナ環境を作成する

大まかな流れ

  • ハンズオン用のリポジトリを使ってnginx-django-mysql環境を構築する

  • .envと.gitignoreを修正

  • ソースコード作成

  • settings.pyを修正

  • docker-compose upして実際に表示できるか確認

  • ハンズオン用のリポジトリをclone

bash
git clone https://github.com/hkobashi/docker-for-python-django
tree
.
├── README.md # 本ファイル
├── docker-compose-dev.yml # 開発環境用コンテナ設定ファイル(django-mysqlのみ)
├── docker-compose-prd.yml # 本番環境用コンテナ設定ファイル(django-mysql-nginx)
├── dockerfiles # 各コンテナの詳細設定ファイルを格納
│   ├── mysql
│   │   ├── Dockerfile # mysqlのバージョンなどを設定
│   │   ├── init.sql # Djangoで使用するDBユーザーに権限を付与
│   │   └── my.cnf # 文字コードやシステム時刻を設定
│   ├── nginx
│   │   ├── Dockerfile # nginxのバージョンなどを設定
│   │   └── django.conf # リバースプロキシ、静的ファイルの設定
│   └── python
│       ├── Dockerfile # pythonのバージョンなどを設定
│       ├── entrypoint.sh # 本番環境用の起動スクリプト
│       └── requirements.txt # インストールするPythonライブラリ群
└── src # ソースコードを格納するディレクトリ

サンプル用ソースコード作成

bash
# djangoプロジェクトを作成
docker-compose -f docker-compose-dev.yml exec app django-admin startproject mysite .
  • settings.pyを修正
src/settings.py
# settings.pyに「STATIC_ROOT」を追記
STATIC_ROOT = '/static/'
# DB接続情報をSQLite→MySQLに変更
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        # .envで設定した環境変数をDATABASESのパラメータに反映
        "NAME": os.environ.get("MYSQL_DATABASE"),
        "USER": os.environ.get("MYSQL_USER"),
        "PASSWORD": os.environ.get("MYSQL_PASSWORD"),
        "HOST": "db",
        "PORT": 3306, # コンテナ側のポート番号を指定
    }
}
  • 開発環境用コンテナを起動
bash
docker-compose -f docker-compose-dev.yml up -d
# DBマイグレーション
docker-compose -f docker-compose-dev.yml exec app python manage.py migrate
  • 「127.0.0.1:16000」にアクセスしてお馴染みのロケットが出てきたらOK
    image.png

今後について

  • 現状だとrootユーザーでコンテナが実行されているためこの辺りの権限制御もしていきたい
    →セキュリティの観点からこのままデプロイするわけにはいかないため
  • 後日、ECSかEKSにデプロイした記事を投稿する予定

参考にした記事

0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?