Edited at

Docker上のCentOSにPython3と、関連ライブラリpip, virtualenvとフレームワークDjango, bottle, Flaskのインストール!これらをまとめたDockerfile付き!

More than 1 year has passed since last update.


はじめに

「優しいIT」という理念の基、ITコンサルタントをしている亀井亮介と申します!

現在、仕事では要求分析・要件定義を中心に上流工程をしていますが、プログラムも書きます!

2016年7月17, 18日に友人と「Pythonハック会」をしています。

Python3系のDockerイメージは既にあると思いますが、今回作成したDockerfileを使えば、常に最新版のCentOSでPython環境を構築できるので、意味があるかと思います!

フレームワークはDjangoだけでなく、bottleとFlaskのインストールも記載しているので参考にしてください!


重要

次の日、フレームワークを実際に動作させる…で思いっきり壁に当たりました(泣)

Pythonは公式イメージ(2016年7月18日はPython:3.5.2)を使う方が良いです。この記事は参考としてください…(削除するかも)

bottleのインストールから動作確認まではこちら!


目的


  1. Pythonでブログシステムを構築、フレームワークはDjangoを利用します。

  2. (せめて)開発環境はDockerを利用する

  3. Pythonでよく使うpipやvirtualenvもインストール

  4. フレームワークはDjango, bottle, Flaskのインストールを掲載しています(お好みでどうぞ)

  5. これらを一発で実現できるDockerfileを作成


環境(2016年7月17日現在)

Max OS X El Capitan

Docker 1.9.1

CentOS 7.2系

Python 3.5.2

MySQL 5.7.11


役割分担

私 Dockerで環境構築

メンバー コーディング


Dockerfile

下記のDockerfileをコピペして、コマンドを実行するだけで最新版のCentOS上に、Python3.5.2をインストール可能です!


Dockerfile

# OSはCentOS

FROM centos:latest

# 各パッケージをインストール
# pipやvirtualenvインストールも想定しています。
RUN yum -y update
RUN yum -y groupinstall "Development Tools"
RUN yum -y install \
kernel-devel \
kernel-headers \
gcc-c++ \
patch \
libyaml-devel \
libffi-devel \
autoconf \
automake \
make \
libtool \
bison \
tk-devel \
zip \
wget \
tar \
gcc \
zlib \
zlib-devel \
bzip2 \
bzip2-devel \
readline \
readline-devel \
sqlite \
sqlite-devel \
openssl \
openssl-devel \
git \
gdbm-devel \
python-devel

# Python3.5.2をインストール
# Python3.5.2をダウンロード
WORKDIR /root
RUN wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
RUN tar xzvf Python-3.5.2.tgz

# makeでインストール
WORKDIR ./Python-3.5.2
RUN ./configure --with-threads
RUN make install

# pipインストール(最新版)
RUN wget https://bootstrap.pypa.io/get-pip.py
RUN python get-pip.py

# readlineインストール
RUN pip install readline

# virtualenvインストール
RUN pip install virtualenv

# Djangoインストール
RUN pip install django

# おまけ
# Django以外のフレームワークインストール
# bottleインストール
# RUN pip install bottle

# Flaskインストール
# RUN pip install Flask

WORKDIR /root
CMD ["/bin/bash"]



PythonインストールCentOSイメージ生成

$ docker build -t {任意のイメージ名} .

# 例
$ docker build -t ms-06r-1a-000 .


作成したPython入りのCentOSイメージからコンテナ作成

$ docker run -it --name {任意のコンテナ名} {作成したイメージ名} /bin/bash

# 例
$ docker run -it --name ms-06r-1a-000-python ms-06r-1a-000 /bin/bash


解説


  1. DockerでCentOSコンテナを作成し起動

  2. Python3をインストール

  3. 開発に必要なライブラリをインストール

  4. フレームワークのインストール(Django, bottle, Flask)

  5. Python環境とMySQLサーバとデータ含めてdocker-compose化(まだ)

ここからはDockerfile生成に至る過程を解説します。


1. DockerでCentOSコンテナを作成し起動

Dockerはインストール済みの前提です。


イメージがなければCentOSのイメージをプル

$ docker pull centos



イメージがプルできたことを確認

$ docker images

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos latest 3508c878e883 2 weeks ago 196.8 MB


CentOSのコンテナを作成し、そのままログイン

$ docker run -it centos

#


CentOSのバージョンを確認

# cat /etc/redhat-release

CentOS Linux release 7.2.1511 (Core)

CentOSが7系であることを確認しました。

続いてデフォルトでインストールされているPythonを確認します。


Pythonのデフォルトバージョン

# python -V

Python 2.7.5

Pythonは3系を利用したいので、インストールします。

http://pppurple.hatenablog.com/entry/2016/01/24/213645


2. Python3をインストール

Dockerfileにしてもインストールできる方法にしました。

Python3の最新版をソースからmakeしています。

(pyenvのインストールがDockerfileにしたらうまくいかず…巻末に記載しています。)


2-1. 必要なライブラリをインストール

Python3だけでなく、pipやvirtualenv、開発に必要なライブラリをインストールします!

Pythonプロフェッショナルプログラミング 第2版を参考にしています。

※上記書籍ではUbuntuなので、パッケージのインストールは、Ubuntuがapt-getですが、今回はCentOSなのでyumに置き換えています。


諸々のライブラリをインストール(既に最新版インストール済みのものもあります)

# yum -y update

# yum -y groupinstall "Development Tools"
# yum -y install \
kernel-devel \
kernel-headers \
gcc-c++ \
patch \
libyaml-devel \
libffi-devel \
autoconf \
automake \
make \
libtool \
bison \
tk-devel \
zip \
wget \
tar \
gcc \
zlib \
zlib-devel \
bzip2 \
bzip2-devel \
readline \
readline-devel \
sqlite \
sqlite-devel \
openssl \
openssl-devel \
git \
gdbm-devel \
python-devel

Python3.5.2をインストール


Python3.5.2をダウンロードし解凍

# cd /root

# wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
# tar xzvf Python-3.5.2.tgz


makeでPython3をインストール

# cd ./Python-3.5.2

# ./configure --with-threads
# make install


3. 開発に必要なライブラリをインストール


3-1. pipをインストール

pipはPyPIからサードパーティのライブラリをインストールするツールです!


pip(最新版をインストールする方法)

# wget https://bootstrap.pypa.io/get-pip.py

# python get-pip.py


pipのバージョン確認

# pip3 --version

pip 8.1.2 from /root/.pyenv/versions/3.5.2/lib/python3.5/site-packages (python 3.5)


3-2. readlineをインストール

readlineはテキストファイルの読み込みのライブラリです!


readlineインストール

# pip3 install readline



3-3. virtualenvをインストール

virtualenvは仮想的なPythonの実行環境です!


virtualenvをインストール

# pip3 install virtualenv



virtualenvのバージョン確認

# virtualenv --version

15.0.2

virtualenvを使ってみましょう!


virtualenv実行

# cd {適当なフォルダ}

# virtualenv sample
# ls
sample
# source sample/bin/activate
(sample) #


4. フレームワークのインストール(Django, bottle, Flask)


4-1. Djangoインストール

pipがあれば、次のコマンド一発でインストール可能です!

DjangoはPythonのフルスタックフレームワークです!


pipでDjangoをインストール

# pip3 install django



4-2. bottleインストール

bottleは軽量のPythonフレームワークで、ライブラリの依存関係がなく、1つのpythonファイル(jQueryみたい)のみのフレームワークです!


pipでbottleインストール

# pip3 install bottle



4-3. Flaskインストール

Flaskも軽量なPythonフレームワークです!

こちらもpipでインストール可能です!


pipでFlaskインストール

# pip3 install Flask



おまけ pyenvインストール

Dockerfile化をすることができませんでしたが、CentOS上ではこの方法でPython3をインストールできたので掲載してます。

Gitでクローンし、bash_profileに環境変数を記述します。


pyenvをクローン

# git clone https://github.com/yyuu/pyenv.git /root/.pyenv



bash_profileに環境変数を記述するためにviを起動

# vi /etc/skel/.bash_profile



.bash_profile

# pyenv

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"


bash_profileを反映。

# source /etc/skel/.bash_profile



設定を確認

# pyenv version

system (set by /root/.pyenv/version)


Pythonのリスト

# pyenv install --list

Available versions:
2.1.3
2.2.3
2.3.7
...
3.5.1
3.5.2
3.6.0a1
3.6.0a3
3.6-dev
...


安定版の3.5.2(2016年7月17日現在)をインストール

# pyenv install 3.5.2

Downloading Python-3.5.2.tar.xz...
-> https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tar.xz
Installing Python-3.5.2...
# pyenv global 3.5.2
# pyenv rehash


Pythonのバージョンを確認

# python -V

Python 3.5.2


サイトマップ(未投稿あり)


テスト駆動開発を重点においた規則

コーディング規則「優しいコードを書こう」(FuelPHP)

命名規則「3ヶ月後の自分自身に優しく、チームに優しく、まだ見ぬメンバーに優しく」


Docker+PythonでWebアプリケーション開発

Docker上のCentOSにPython3と、関連ライブラリpip, virtualenvとフレームワークDjango, bottle, Flaskのインストール!これらをまとめたDockerfile付き!


開発しやすい環境構築(Docker+PHP)

Dockerを利用しApacheにPHP環境 + Eclipseを連携

Dockerを利用したFuelPHP開発環境構築

Docker利用したFuelPHP開発環境の初期設定とscaffoldを利用してCRUDスケルトン作成

FuelPHPのデータベースマイグレーション


Raspberry Pi 3 (ラズパイ)とpythonで遊ぼう

Raspberry Pi 3インストール→無線LAN→日本語入出力→Macから操作

Raspberry Pi 3でプログラミングをする Node-REDと普通にプログラミング

Raspberry Pi 3でpythonを使いLEDを光らせる(Hello World)

Raspberry Pi 3でスイッチの状態を検出する

Raspberry Pi 3でpythonを使いサーボモータを動かす