Docker Build Run で Django と SQLite を動かす
Tags: docker, django, sqlite
Published: 2021-11-27 15:04:25


## 参考

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

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

## Dockerfile を書く

```Dockerfile
FROM python:3
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code
RUN pip install -r requirements.txt
COPY . /code/
```

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

```txt
Django==3.0.7
```

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

## Dockerfile を使って build する

```
docker build -t djangotest .
```

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 
 
```

作成できた。

```
 docker images
REPOSITORY          TAG       IMAGE ID       CREATED         SIZE
djangotest          latest    8397371ae761   2 minutes ago   904MB
```

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

## 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
```

動かない

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

```
pwd
/Users/kaede0902/code/docker-build-run-django
```

```
docker run -v \
/Users/kaede0902/code/docker-build-run-django:/code \
djangotest django-admin startproject mysite . \
```

これで錬成できる

```
ls
Dockerfile              manage.py               mysite                  requirements.txt
```

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
```

これで裏で動く。

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5tbvlprb3zu5z9zq9641.png)