LoginSignup
87
96

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-07-17

はじめに

「優しい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を使いサーボモータを動かす

87
96
1

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
87
96