Docker(compose)にDjango開発環境を移行する際の備忘録
3919 ワード
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
Author And Source
この問題について(Docker(compose)にDjango開発環境を移行する際の備忘録), 我々は、より多くの情報をここで見つけました https://qiita.com/Takagi_/items/fa54312e4801724452f4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .