LoginSignup
6
6

More than 3 years have passed since last update.

docker-composeでpythonを立ち上げてみた(Dockerfile)

Last updated at Posted at 2019-05-28

概要

いろいろとpythonの環境を考えた結果macではdockerを使ったらいいのでは無いかと思い最初から勉強してみた。

参考

dockerで簡易にpython3の環境を作ってみる
docker-compose コマンドまとめ
あと、公式のリファレンスとか
Compose CLI リファレンス
コンテナで Hello world

ファイル構成

ファイル一覧
├ Dockerfile 
└ docker-compose.yml

Dockerfile

基本的にはpipでインストールするものは最小限のほうが良いとされる。
つまり、何であれ最小構成を心がける。

Dockerfile
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

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/

起動

terminal
$docker-compose up -d --build

停止

terminal
docker-compose down --rmi all

--rmi all でイメージも含めて削除
dockerは短命であるべきらしい

接続

attachもあるみたいだけど、exitすると完全にコンテナが停止するらしいので、基本的にはexecらしい

terminal
$ docker exec -it python3 bash

ps

一番上の参考記事を踏襲した感じになっているので、そちらとの差異を見ていただけたらと思います。
基本的にはDockerfileのみが変わっていると思っていただいて。。。。。
あとは、dockerの基本的な考え方が載っているDockerfile を書くベスト・プラクティスを読むと
コンテナはエフェメラルであるべき
Dockerfile で定義されたイメージを使って作成するコンテナは、可能ならばエフェメラル(短命;ephemeral)にすべきです。私たちの「エフェメラル」とは、停止・破棄可能であり、明らかに最小のセットアップで構築して使えることを意味します。

のようにいろいろな指針が載っています。

6
6
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
6
6