/note/tech

Pythonで開発する際の基本となるDockerile

Ubuntuベースなのは単なる趣味。タイムゾーンをJSTにしたいのでtzdataを入れている。

FROM ubuntu:18.04

ENV DEBIAN_FRONTEND=noninteractive

WORKDIR /app

RUN apt-get update && apt-get update -y

RUN apt-get install -y  tzdata python3 python3-dev  python3-venv  python3-pip

RUN pip3 install pipenv

Dockerfileと同じディレクトリに.envファイルを作成し、タイムゾーンやLANGの設定を登録する。別にDockerfile内に書いてもいいけど、ステップを消費するのが何か嫌なのと実行時に動的に変えられた方が便利かなと。

LANG系の設定はこれをやっておかないとpipの操作とかで死ぬと思う(忘れた)。

PIPENV_VENV_IN_PROJECTはpipenvの.venvディレクトリをプロジェクト配下に作らせる。これが無いとHOMEディレクトリ下に作られて、コンテナから抜けるとDLしたライブラリが消えて困ったりする。

TZ=Asia/Tokyo
LC_ALL=C.UTF-8
LANG=C.UTF-8
PIPENV_VENV_IN_PROJECT=true

↓みたいな感じで使う。

docker run -it --rm -p 8080:8080 --env-file ./.env -v $(pwd):/app CONTENA_NAME