我使用docker-compose搭建了nginx-django-mysql(实践课程)

我想做的事情

    • nginx-django-mysqlを使った環境構築をdocker-composeで可能にする

 

    Python(Django)に限らず可能な限りどの言語でも使えるコンテナ環境を作成する

大体的流程 de

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

.envと.gitignoreを修正

ソースコード作成

settings.pyを修正

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

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

git clone https://github.com/hkobashi/docker-for-python-django

.env_sampleを参考に.envファイルを作成
※.gitignoreに追記を忘れずに-
→すでに追記されているので改めての追記は不要でした
※@shun198 さんご指摘ありがとうございます

この時点でこんな感じのディレクトリ構成になっている

.
├── 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 # ソースコードを格納するディレクトリ

创建示例源代码

djangogirlsチュートリアルを使ってソースコードを作成していく

# djangoプロジェクトを作成
docker-compose -f docker-compose-dev.yml exec app django-admin startproject mysite .
    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, # コンテナ側のポート番号を指定
    }
}
    開発環境用コンテナを起動
docker-compose -f docker-compose-dev.yml up -d
# DBマイグレーション
docker-compose -f docker-compose-dev.yml exec app python manage.py migrate
image.png

关于未来

    • 現状だとrootユーザーでコンテナが実行されているためこの辺りの権限制御もしていきたい

 

    • →セキュリティの観点からこのままデプロイするわけにはいかないため

 

    後日、ECSかEKSにデプロイした記事を投稿する予定

引用的文章

 

广告
将在 10 秒后关闭
bannerAds