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