はじめに
「優しいIT」という理念の基、ITコンサルタントをしている亀井亮介と申します!
現在、仕事では要求分析・要件定義を中心に上流工程をしていますが、プログラムも書きます!
2016年7月17, 18日に友人と「Pythonハック会」をしています。
Python3系のDockerイメージは既にあると思いますが、今回作成したDockerfileを使えば、常に最新版のCentOSでPython環境を構築できるので、意味があるかと思います!
フレームワークはDjangoだけでなく、bottleとFlaskのインストールも記載しているので参考にしてください!
重要
次の日、フレームワークを実際に動作させる…で思いっきり壁に当たりました(泣)
Pythonは公式イメージ(2016年7月18日はPython:3.5.2)を使う方が良いです。この記事は参考としてください…(削除するかも)
bottleのインストールから動作確認まではこちら!
目的
- Pythonでブログシステムを構築、フレームワークはDjangoを利用します。
- (せめて)開発環境はDockerを利用する
- Pythonでよく使うpipやvirtualenvもインストール
- フレームワークはDjango, bottle, Flaskのインストールを掲載しています(お好みでどうぞ)
- これらを一発で実現できる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をインストール可能です!
# 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"]
$ docker build -t {任意のイメージ名} .
# 例
$ docker build -t ms-06r-1a-000 .
$ docker run -it --name {任意のコンテナ名} {作成したイメージ名} /bin/bash
# 例
$ docker run -it --name ms-06r-1a-000-python ms-06r-1a-000 /bin/bash
解説
- DockerでCentOSコンテナを作成し起動
- Python3をインストール
- 開発に必要なライブラリをインストール
- フレームワークのインストール(Django, bottle, Flask)
- Python環境とMySQLサーバとデータ含めてdocker-compose化(まだ)
ここからはDockerfile生成に至る過程を解説します。
1. DockerでCentOSコンテナを作成し起動
Dockerはインストール済みの前提です。
$ docker pull centos
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos latest 3508c878e883 2 weeks ago 196.8 MB
$ docker run -it centos
#
# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
CentOSが7系であることを確認しました。
続いてデフォルトでインストールされている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をインストール
# cd /root
# wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
# tar xzvf Python-3.5.2.tgz
# cd ./Python-3.5.2
# ./configure --with-threads
# make install
3. 開発に必要なライブラリをインストール
3-1. pipをインストール
pipはPyPIからサードパーティのライブラリをインストールするツールです!
# wget https://bootstrap.pypa.io/get-pip.py
# python get-pip.py
# 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はテキストファイルの読み込みのライブラリです!
# pip3 install readline
3-3. virtualenvをインストール
virtualenvは仮想的なPythonの実行環境です!
# pip3 install virtualenv
# virtualenv --version
15.0.2
virtualenvを使ってみましょう!
# cd {適当なフォルダ}
# virtualenv sample
# ls
sample
# source sample/bin/activate
(sample) #
4. フレームワークのインストール(Django, bottle, Flask)
4-1. Djangoインストール
pipがあれば、次のコマンド一発でインストール可能です!
DjangoはPythonのフルスタックフレームワークです!
# pip3 install django
4-2. bottleインストール
bottleは軽量のPythonフレームワークで、ライブラリの依存関係がなく、1つのpythonファイル(jQueryみたい)のみのフレームワークです!
# pip3 install bottle
4-3. Flaskインストール
Flaskも軽量なPythonフレームワークです!
こちらもpipでインストール可能です!
# pip3 install Flask
おまけ pyenvインストール
Dockerfile化をすることができませんでしたが、CentOS上ではこの方法でPython3をインストールできたので掲載してます。
Gitでクローンし、bash_profileに環境変数を記述します。
# git clone https://github.com/yyuu/pyenv.git /root/.pyenv
# vi /etc/skel/.bash_profile
# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# source /etc/skel/.bash_profile
# pyenv version
system (set by /root/.pyenv/version)
# 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
...
# 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 -V
Python 3.5.2
サイトマップ(未投稿あり)
テスト駆動開発を重点においた規則
コーディング規則「優しいコードを書こう」(FuelPHP)
命名規則「3ヶ月後の自分自身に優しく、チームに優しく、まだ見ぬメンバーに優しく」
Docker+PythonでWebアプリケーション開発
開発しやすい環境構築(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を使いサーボモータを動かす