エンジニア

CentOS 6にPython2.7.9とMySQL5.6を入れるDockerfileのサンプル

投稿日:2015年6月9日 更新日:

最近、アプリエンジニアの岩原です。
今回は、Dockerfileを使用して、CentOS 6 + Python2.7.9 + MySQL5.6のDocker Imageを作成するサンプルをお見せしようかと思います。
Python + MySQLを使用したサーバーアプリのユニットテストなどに使えると思います。
サンプルではその他にpipなどの導入も行ってます。
EC2のディレクトリ構成を意識している箇所があります。

Dockerfile

Dockerイメージを作成するためのファイルです。
MAINTAINERはご自身の情報に書き換えてください。
やっていることは

1.MySQLのセットアップ
2.Pythonのアップデートに必要なモジュールのインストール
3.Pythonのアップデート
4.pipのインストール
5.pytestとその他Pythonモジュールのインストール
6.MySQLデータベースのセットアップ

です。

FROM centos:6
# MAINTAINERはご自身の情報に書き換えてください
MAINTAINER hogehoge <xxx@abcd.abcd>

# mysql setup.
RUN rpm -ihv http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
RUN yum -y install mysql-community-server

# python setup
RUN yum -y install gcc
RUN yum -y install gcc-c++
RUN yum -y install make
RUN yum -y install git
RUN yum -y install zlib-devel
RUN yum -y install readline-devel
RUN yum -y install sqlite-devel
RUN yum -y install openssl-devel
RUN yum -y install bzip2-devel
RUN yum -y install mysql-devel
RUN yum -y install libcurl-devel
RUN yum -y install tar
RUN yum -y install python-devel
RUN yum -y install which

# EC2 directory
RUN mkdir /home/ec2-user
WORKDIR /home/ec2-user

# python version up.
RUN curl -O https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
RUN tar zxf Python-2.7.9.tgz
WORKDIR /home/ec2-user/Python-2.7.9
RUN ./configure --prefix=/usr/local
RUN make && make install

# pip setup
WORKDIR /home/ec2-user
RUN python --version
RUN curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

# setting pycurl
ENV PYCURL_SSL_LIBRARY nss
# setup server env.
ADD ./requirements.txt ./requirements.txt
RUN pip install -r requirements.txt
RUN pip install -U pytest

# setup database
RUN echo "NETWORKING=yes" > /etc/sysconfig/network
#RUN service mysqld restart
RUN mkdir OpsTools
WORKDIR /home/ec2-user/OpsTools
ADD ./tests ./tests
WORKDIR /home/ec2-user/OpsTools/tests
RUN chmod 755 ./database_setup.sh
RUN ./database_setup.sh  
requirements.txt(サンプル)

pip installでインストールモジュールです。
このサンプルでは、flask、pycurl、MySQL-python、SQLAlchemyのインストールをしています。

Flask==0.10.1
itsdangerous==0.24
Jinja2==2.7.3
MarkupSafe==0.23
MySQL-python==1.2.5
pycurl==7.19.5.1
SQLAlchemy==0.9.9
Werkzeug==0.10.4  
database_setup.sh

MySQLのセットアップを行うシェルスクリプトです。
rootユーザーのパスワードの設定なども行ってます。
ユニットテスト用の使い捨てであるため、rootのパスワードは適当です。

#!/bin/sh  

service mysqld start
#root user password setting.  
mysqladmin -u root password "root"
mysql --defaults-extra-file=./my.cnf -e "DELETE FROM mysql.user WHERE User='';"
mysql --defaults-extra-file=./my.cnf -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1');"
mysql --defaults-extra-file=./my.cnf -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%';"
mysql --defaults-extra-file=./my.cnf -e "FLUSH PRIVILEGES;"
service mysqld restart

mysql --defaults-extra-file=./my.cnf < ./schema.sql

service mysqld stop
my.cnf

MySQLの接続設定です。
rootのパスワードを変えた場合は個々のpasswordも変えましょう。

[client]
user = root
password = root
host = localhost  
schema.sql

schema.sqlはデータベース作成、テーブル作成のSQLを流します。
ここでは省略します。

採用情報

ワンダープラネットでは、一緒に働く仲間を幅広い職種で募集しております。

-エンジニア
-

© WonderPlanet Inc.