DEV Community

kaede
kaede

Posted on

Docker Build Run で Django と SQLite を動かす

参考

https://engineer-ninaritai.com/docker-django/

このサイトの通り、Dockerfile を build して run してみる

Dockerfile を書く

FROM python:3
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code
RUN pip install -r requirements.txt
COPY . /code/
Enter fullscreen mode Exit fullscreen mode

python3 を使うことを明記
Docker 空間の root に code/ というディレクトリを作る
通常の空間に準備されている requirements.txt から
Docker 空間の root の code/ に複製する
そしてその Docker 空間で今複製された requirements.txt を使い
必要なライブラリをインストールする
そして、その code/ ディレクトリを更新する

Django==3.0.7
Enter fullscreen mode Exit fullscreen mode

requirements.txt には Django のバージョンだけ書いておく

Dockerfile を使って build する

docker build -t djangotest .
Enter fullscreen mode Exit fullscreen mode

djangotext という名前で . にビルドする

-t は

Name and optionally a tag in the 'name:tag' format

で format のやり方らしい。

kaede0902@rooter docker-build-run-django % docker build -t djangotest .
[+] Building 9.4s (12/12) FINISHED                                                                                                              

 => [1/6] FROM docker.io/library/python:3@sha256:437585501d11ef4b4b831cf8a6d6611eb526e327006d506bcedcfdea3fde442a                          1.7s
 => => resolve docker.io/library/python:3@sha256:437585501d11ef4b4b831cf8a6d6611eb526e327006d506bcedcfdea3fde442a                          0.0s

 => [2/6] RUN mkdir /code                                                                                                                  0.2s
 => [3/6] WORKDIR /code                                                                                                                    0.0s
 => [4/6] COPY requirements.txt /code                                                                                                      0.0s
 => [5/6] RUN pip install -r requirements.txt                                                                                              3.0s
 => [6/6] COPY . /code/                                                                                                                    0.0s
 => exporting to image                                                                                                                     0.4s
 => => exporting layers                                                                                                                    0.4s
 => => writing image sha256:8397371ae76189356d86a824c3c276237ca8ceb326977d081d2253e1be05411e                                               0.0s 
 => => naming to docker.io/library/djangotest                                                                                              0.0s 

Enter fullscreen mode Exit fullscreen mode

作成できた。

 docker images
REPOSITORY          TAG       IMAGE ID       CREATED         SIZE
djangotest          latest    8397371ae761   2 minutes ago   904MB
Enter fullscreen mode Exit fullscreen mode

ファイルにはないっていないが、 確認できる。

docker image を使って django admin を使って django project を作る

docker run djangotest

djangotest django-admin startproject mysite

djangotest django-admin startproject mysite
zsh: command not found: djangotest

:/code djangotest django-admin startproject mysite
zsh: no such file or directory: :/code
Enter fullscreen mode Exit fullscreen mode

動かない

現在のディレクトリと docker コンテナの紐付けがひつようらしい。

pwd
/Users/kaede0902/code/docker-build-run-django
Enter fullscreen mode Exit fullscreen mode
docker run -v \
/Users/kaede0902/code/docker-build-run-django:/code \
djangotest django-admin startproject mysite . \
Enter fullscreen mode Exit fullscreen mode

これで錬成できる

ls
Dockerfile              manage.py               mysite                  requirements.txt
Enter fullscreen mode Exit fullscreen mode

manage.py と mysite ができている

docker run する

docker run -v \
/Users/kaede0902/code/docker-build-run-django:/code \
-d -p 8000:8000 djangotest \
python manage.py runserver 0.0.0.0:8000
Enter fullscreen mode Exit fullscreen mode

これで裏で動く。

Image description

Discussion (0)