LoginSignup
1
1

More than 3 years have passed since last update.

Django GirlsチュートリアルでつくったものでDockerfile作成

Last updated at Posted at 2020-05-28

環境

macOS

Dockerfileの作成

Django Girlsチュートリアルでつくったもの

$ ls 
blog            manage.py        myvenv 
README.md        db.sqlite3        mysite            requirements.txt

Docker Hubで使いたいイメージを探します。
公式のものなど、なるべく信頼できるイメージをつかいます。

元になるイメージはpython:3.7-slim-busterを選びました。
Django起動時に打ち込んでいるコマンドを
Dockerfileに書き込んでいきます。

$ vi Dockerfile 
FROM python:3.7-slim-buster 
COPY . /app/ 
WORKDIR /app 
RUN pip3 install -r requirements.txt 
RUN python3 manage.py collectstatic --noinput 
CMD python3 manage.py runserver 0.0.0.0:8000

Dockerの構築

任意でイメージ名やタグなどの指定をして
buildしてみます。

$ docker build -t [イメージ名]:[タグ] . 
例えば 
$ docker build -t djangogirls:0.1.0 .

イメージの一覧を表示させます。

$ docker images 
REPOSITORY        TAG          IMAGE ID             CREATED              SIZE 
djangogirls              latest        53a38ee83c1a      24 minutes ago 

ローカルで何か走っていないか確認👀

Dockerを走らせる前に
心当たりがある場合は、ローカルで何か走っていないか確認します。
※特にローカルで走らせているものがなければ、以下読み飛ばしてもOKです。

$ ps -ef | grep runserver 
  502  2437   479   0 土02PM ttys000    0:00.60 /Library/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python manage.py runserver 
  502  2438  2437   0 土02PM ttys000   58:01.79 /Library/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python manage.py runserver 
  502 26677 13920   0  3:55PM ttys003    0:00.01 grep runserver

大まかに書くと

2437(子:Django)    479(親:shell) 
2438(子:Python)   2437(親:Django) 
26677 13920 => いま検索したgrepコマンドが走っているので無視

shellは殺さず、2437を殺せば親のDjangoもろとも子の2438も死ぬので
ローカルで走りっぱなしでいたDjangoのrunserverをkillします。

$ kill 2437

killできたか確認。

$ ps -ef | grep runserver 
  502 26680 13920   0  3:55PM ttys003    0:00.01 grep runserver

Docker run

Dockerを走らせます。
djangogirlsDocker IDでもOK。

$ docker run -it --rm -p djangogirls

下記にアクセス

image.png

できた👏

Tips (.dockerignore)

全体的に重かったので.dockerignoreを作成し、無視するファイルを指定します。

$ vi .dockerignore 
.dockerignore
myvenv 
db.sqlite3

myvenvは仮想環境なので不要です。
db.sqlite3はDockerに乗せるには今後重くなる可能性が高いので
もしデプロイする際にはMySQLなどを使っても良いかもです。
ちなみにDBをignoreで無視するとDockerを走らせた際に赤文字で


You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, blog, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

このようにDBに問題ありなどと表示されます。
あえてignoreしている場合はスルーです。

1
1
0

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