使用Docker Compose来配置Next.js + Django + Nginx + MySQL的环境
概况
就如标题所述,我希望能够使用Docker Compose轻松地设置环境。
我非常受益于这篇文章。
- DockerでReact+Django+Nginx+MySQLの環境構築
尽管基本上是照搬别人的,但本文的主要变更如下五点。
-
- 使用するパッケージやDockerイメージのバージョンをアップデート
-
- create-next-appを使用
-
- フロントエンドのDockerイメージをマルチステージビルドで軽量化
wait.shを不要にして安定化
細かな不具合を修正し、より使いやすく
源代码
- ソースコードへのリンク
用法
克隆存储库
$ git clone https://github.com/maeple5/docker-nextjs-django-nginx.git
$ cd .\docker-nextjs-django-nginx\
将Django项目中的.env.example文件复制并重命名为.env。
SECRET_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
DEBUG=False
.
├── config
├── static
├── staticfiles
├── todo
├── .env <----- copy & rename
├── .env.example
└── Dockerfile
└── manage.py
└── requirements.txt
请执行以下命令。
$ docker-compose up
如果DB容器成功启动,请在另一个终端中执行以下操作。
$ docker-compose run --rm web-back sh -c "python manage.py migrate"
$ docker-compose run --rm web-back sh -c "python manage.py createsuperuser"
$ docker-compose run --rm web-back sh -c "python manage.py collectstatic"

希望这次的内容能对您有所帮助。如果能稍微提供一些参考,我会很高兴。
改善的地方
-
- Djangoの設定を環境ごとに分け、ログ出力の設定などを加える。
-
- ディレクトリ構成を変更する。(ルートディレクトリに.dockerディレクトリを作ってDockerFileをまとめる。その場合docker-compose.yaml内の参照パスを変更する必要がある。)
- フロントエンドでホットリロードが効かない問題 (解決済み)
使用包装(2023/05/21)
asgiref==3.6.0
Django==4.2.1
django-cors-headers==4.0.0
djangorestframework==3.14.0
gunicorn==20.1.0
psycopg2-binary==2.9.6
django-environ==0.10.0
pytz==2023.3
sqlparse==0.4.4
mysqlclient==2.1.1
"@types/node": "20.2.1",
"@types/react": "18.2.6",
"@types/react-dom": "18.2.4",
"autoprefixer": "10.4.14",
"axios": "^1.4.0",
"eslint": "8.41.0",
"eslint-config-next": "13.4.3",
"next": "^13.4.3",
"postcss": "8.4.23",
"react": "18.2.0",
"react-dom": "18.2.0",
"tailwindcss": "3.3.2",
"typescript": "5.0.4"
使用的Docker镜像(2023/05/21)
-
- nginx:1.24.0-alpine
-
- python:3.9
-
- node:20-alpine
- mysql:8.0.33
参考的文章。
DockerでReact+Django+Nginx+MySQLの環境構築
Next.js 12で開発中のHMRがうまくいかない場合の対処
Static Exports (Next.jsの公式ドキュメント)
Docker with Multi Stage Buildを利用したNext.jsのDockerイメージを作る