概要
いろいろとpythonの環境を考えた結果macではdockerを使ったらいいのでは無いかと思い最初から勉強してみた。
参考
dockerで簡易にpython3の環境を作ってみる
docker-compose コマンドまとめ
あと、公式のリファレンスとか
Compose CLI リファレンス
コンテナで Hello world
ファイル構成
├ Dockerfile
└ docker-compose.yml
Dockerfile
基本的にはpipでインストールするものは最小限のほうが良いとされる。
つまり、何であれ最小構成を心がける。
FROM python:3.7.3
USER root
SHELL ["/bin/bash", "-c"]
ENV DEBCONF_NOWARNINGS yes
RUN apt-get update && apt-get -y install locales && \
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm
RUN apt-get install -y vim less
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools
RUN pip install numpy \
matplotlib \
pandas \
docker-compose.yml
version: '3'
services:
python3:
restart: always
build: .
container_name: 'python3'
working_dir: '/root/dev/'
tty: true
volumes:
- /Users/hoge/dev/python3/:/root/dev/
起動
$docker-compose up -d --build
停止
docker-compose down --rmi all
--rmi all
でイメージも含めて削除
dockerは短命であるべきらしい
接続
attach
もあるみたいだけど、exit
すると完全にコンテナが停止するらしいので、基本的にはexec
らしい
$ docker exec -it python3 bash
ps
一番上の参考記事を踏襲した感じになっているので、そちらとの差異を見ていただけたらと思います。
基本的にはDockerfileのみが変わっていると思っていただいて。。。。。
あとは、dockerの基本的な考え方が載っているDockerfile を書くベスト・プラクティスを読むと
コンテナはエフェメラルであるべき Dockerfile で定義されたイメージを使って作成するコンテナは、可能ならばエフェメラル(短命;ephemeral)にすべきです。私たちの「エフェメラル」とは、停止・破棄可能であり、明らかに最小のセットアップで構築して使えることを意味します。
のようにいろいろな指針が載っています。