LoginSignup
0
0

More than 3 years have passed since last update.

Docker(compose)にDjango開発環境を移行する際の備忘録

Last updated at Posted at 2020-02-23

Dockerfile


FROM python:3.7
ENV PYTHONUNBUFFERED 1
WORKDIR /code
COPY requirements.txt /code/
RUN pip install --no-cache-dir -r requirements.txt
COPY ./code /code/.
RUN python manage.py migrate
  • FROMでpython3.7環境を使用
  • ENVでエラー出力抑制(らしい)
  • WORKDIRで一時作業フォルダを指定
  • WORKDIRにDockerfileと同じディレクトリに配置しているrequirements.txtをコピーする
  • RUNでrequirements.txtにしたがってインストールを行う
  • COPYでmanage.pyがあるディレクトリを丸ごとWORKDIR配下にコピー
  • RUNでmigrateしておく

ハマりポイントとしては、WORKDIRへのファイルコピー。
Dockerfileと同じディレクトリにあるcodeディレクトリ(Djangoプロジェクト)を指定できずFile Not Foundを連発。
前提条件として、Dockerfileとrequirements.txt、codeディレクトリはすべて同じ階層に配置している。

docker-compose.yml

docker-compose.yml
version: '3'
services:
        web:
                build: .
                ports:
                        - "8000:8000"
                volumes:
                        - ./code:/code
                command: python3 manage.py runserver 0.0.0.0:8000
  • versionは3を指定
  • web:は一時的な名称として指定。
  • build:でDockerfileの位置を指定。カレントディレクトリにあるので'.'を指定。
  • ports:でDjangoのポートを指定。
  • volumes:でカレントディレクトリにあるDjangoプロジェクトのディレクトリをコンテナ内の/codeにマウントする。マウントすることでvscodeなどから直接編集した内容がコンテナ上に反映される。
  • command:でDjangoのWebサーバーを起動させる。引数のIPアドレスとポート番号は必要ないかもしれない。

コマンド類

Dockerコマンドをsudoなしで実行させる場合

$ sudo usermod -aG docker ユーザー名
$ newgrp docker

newgrp dockerを.bashrcなどに書いておくと楽になるかもしれない。

イメージの削除

$ docker images
$ docker rmi イメージID先頭3桁

割り当てられているコンテナが存在する場合は-fをつけて強制的に削除する。

$ docker rmi -f イメージID先頭3桁

コンテナの削除

$ docker rm コンテナID

exited状態のコンテナ複数を一度に削除する

$ docker rm $(docker ps -a --filter 'status=exited' -q)

コンテナにログインしてコマンドを実行したい場合

$ docker exec -it コンテナ名 /bin/bash
0
0
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
0
0