LoginSignup
12
11

More than 3 years have passed since last update.

Dockerfileを使いアプリケーションをコンテナ化してみた

Last updated at Posted at 2014-12-25

SoftLayerの仮想サーバーにインストールしたDocker環境にコンテナを作成します。今回は、アプリケーションとして、SOY CMSというCMS(コンテンツ・マネージメント・システム)を取り上げます。Dockerfileを作成し、コンテナ・イメージとしてbuildした上で、コンテナ化します。作成したDockerfileは、DockerHubに登録して公開します。

docker-stages.png

SOY CMSとは?

どんなホームページでも簡単に更新できるようになる簡単便利なオープンソースCMSです。WordPressのようにLAMPスタック (Linux/Apache/MySQL/PHP)環境で稼働するPHPアプリケーションです。

Dockerfileの作成

DockerfileとはDockerコンテナーのインストール・スクリプトや構成スクリプトの内容が記述されたテキスト形式のファイルです。Dockerfileで利用可能な命令文を以下の表に示します。

命令 用途
FROM 元となるDockerイメージの指定
MAINTAINER 作成者の情報
RUN コマンドの実行
ADD ファイル/ディレクトリの追加
CMD コンテナーの実行コマンド 1
ENTRYPOINT コンテナーの実行コマンド 2
WORKDIR 作業ディレクトリの指定
ENV 環境変数の指定
USER 実行ユーザーの指定
EXPOSE ポートのエクスポート
VOLUME ボリュームのマウント

# docker build

というコマンドを実行すると、Dockerfileに記述された命令文が上から順番に実行されます。

(参考)Dockerfileとdocker buildコマンドでDockerイメージの作成
http://www.atmarkit.co.jp/ait/articles/1407/08/news031.html

SOY CMSコンテナを自動構築するDockerファイルを記述します。ファイル名はDockerfileとします

# vi Dockerfile

Dockerfile
FROM centos:centos6
RUN /bin/cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
RUN yum -y install httpd php php-mysql mysql-server tar wget php-gd php-mbstring
WORKDIR /tmp/
RUN wget http://www.soycms.net/web/files/soycms/soycms_install_1.2.3_sqlite.tar.gz
RUN tar -zxvf ./soycms_install_1.2.3_sqlite.tar.gz
RUN rm -f ./soycms_install_1.2.3_sqlite.tar.gz
RUN mv soycms_installer/* /var/www/html/
RUN chown -R apache.apache /var/www/html/
RUN service mysqld start && mysql -u root -e "CREATE DATABASE soycms; GRANT ALL PRIVILEGES ON soycms.* TO 'soycms'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;" &&  service mysqld stop
RUN echo -e "service mysqld start\nservice httpd start\n/bin/bash" > /startService.sh
RUN chmod o+x /startService.sh
EXPOSE 80
CMD /startService.sh

コンテナ・イメージを作成

Dockerfileのあるディレクトリで以下を実行し、soyという名前で、SOY CMSのコンテナ・イメージを作成します。
# sudo docker build --rm -t soy .

Sending build context to Docker daemon 23.04 kB
Sending build context to Docker daemon 
Step 0 : FROM centos:centos6
 ---> 25c5298b1a36
Step 1 : RUN /bin/cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
 ---> Using cache
 ---> 4646aaa9faec
Step 2 : RUN yum -y install httpd php php-mysql mysql-server tar wget php-gd php-mbstring
 ---> Using cache
 ---> c8ef80fd9628
Step 3 : WORKDIR /tmp/
 ---> Using cache
 ---> 123c8611d1de
Step 4 : RUN wget http://www.soycms.net/web/files/soycms/soycms_install_1.2.3_sqlite.tar.gz
 ---> Using cache
 ---> 4bef70fa7e03
Step 5 : RUN tar -zxvf ./soycms_install_1.2.3_sqlite.tar.gz
 ---> Using cache
 ---> d0f4183b21a4
Step 6 : RUN rm -f ./soycms_install_1.2.3_sqlite.tar.gz
 ---> Using cache
 ---> 63a759aef4b8
Step 7 : RUN mv soycms_installer/* /var/www/html/
 ---> Using cache
 ---> f1222da4a0c1
Step 8 : RUN chown -R apache.apache /var/www/html/
 ---> Using cache
 ---> aebc2b0db237
Step 9 : RUN service mysqld start && mysql -u root -e "CREATE DATABASE soycms; GRANT ALL PRIVILEGES ON soycms.* TO 'soycms'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;" &&  service mysqld stop
 ---> Using cache
 ---> 02f9b0f197ff
Step 10 : RUN echo -e "service mysqld start\nservice httpd start\n/bin/bash" > /startService.sh
 ---> Using cache
 ---> 3dfcff6ee573
Step 11 : RUN chmod o+x /startService.sh
 ---> Using cache
 ---> 9238522020fe
Step 12 : EXPOSE 80
 ---> Using cache
 ---> f63bac97bb22
Step 13 : CMD /startService.sh
 ---> Using cache
 ---> 59fe00d996a2
Successfully built 59fe00d996a2

コンテナを稼働

作成したコンテナ・イメージ(イメージ名:soy)をコンテナとして稼働します。

# sudo docker run -i -t -d -p 8080:80 --name SOYCMS1 soy

6114a929ea3621b1469d22102dc0145e9ca97e1b917b9603811ed357346a629c

SOY CMSにブラウザでアクセス

ホストマシンのIPアドレスに、コンテナ稼働時に指定したポート番号(ここではhttp://<ホストマシンのIPアドレス>:8080)を加えたURLでブラウザからアクセスします。
スクリーンショット 2014-12-25 14.23.17.png

SOY CMSが稼働していることが分かります。あとはウィザードにしたがいインストールすればOKです。

Docker Hubに登録

作成したDockerfileをDocker Hubに登録することができます。また、Docker Hubには、多くのDockerfileが登録されていますので再利用することができます。

https://hub.docker.com/
スクリーンショット 2014-12-25 14.34.02.png

Dokerfileは、Dockerが動いている環境であれば、パブリック・クラウドでも、オンプレミスでも再利用できるので便利ですね。

12
11
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
12
11