2015.03.09
Docker Composeでfuelphp開発環境構築
こんにちは、次世代システム研究室のN.O.です。前回に引き続き、今回は実践ということでコミットステージにおける開発環境をDockerで構築します。先日リリースされたDocker Composeを使って開発環境を構築したいと思います。
Docker Composeとは
Docker Composeは複数のコンテナ起動を簡単に行う事のできるツールです。今風に言うとオーケストレーションしてくれます。ymlファイルにコンテナの定義しておき、それに従ってコマンド一つでコンテナ群が起動できます。操作できる範囲は単体のDockerホスト内のみとなりますが、小規模なコンテナ群、特に開発環境向けではないかと考え今回のデモで採用しました。
以前はFigという名前で公開されていました。
メリット
メリットを以下に挙げます。まだ利用実績が無いので実際のプロジェクトで使用できるかは未知数です。
- VMに比べ起動が早い
- 開発マシンのリソースを節約できる
Dockerはプロセスを実行する形でコンテナを起動しますので、VMに比べ高速です。
VMはboot2docker用のDockerホスト1台で済みますので、vagrantで複数VMを起動するといった構成よりは動作が軽くなります。
前提
シナリオとしてfuelphpで簡単なサンプルアプリケーションを作成し、Dockerで構築したLAMP環境にデプロイします。
ローカル開発環境
- OSX
- boot2docker v1.5.0
- docker-compose 1.1.0
Docker image
今回はDockerのimageは公式のlibraryを利用しますが、プロジェクトの要件に合わせてカスタマイズすることも可能です。この例でもphpライブラリを多少カスタマイズするため、Dockerfileを用意してbuildを行っています。
手順
新規のレポジトリを作成します
curl get.fuelphp.com/oil | sh mkdir fuelphptutorial cd fuelphptutorial oil create demo_app cd demo_app vim fuel/app/config/config.php 'default_timezone' => 'Asia/Tokyo', oil refine install php composer.phar update
コミットします
rm -rf .git git init git status git add . git commit -m "Initial commit"
Dockerfileを作成します
FROM php:5.6-apache # install mysql driver for php RUN docker-php-ext-install pdo pdo_mysql # enable rewrite RUN cd /etc/apache2/mods-enabled && ln -s ../mods-available/rewrite.load WORKDIR /var/www RUN rm -r /var/www/html && ln -s /var/www/demo_app/public /var/www/html
docker-compose.ymlを作成します
db: image: mysql environment: - MYSQL_ROOT_PASSWORD=mysecretpassword - MYSQL_DATABASE=fuel_intro web: build: Dockerfile/fuelphp-apache links: - db ports: - "3000:80" volumes: - .:/var/www/demo_app
dockerコンテナを作成します
# DBを起動します docker-compose up -d db # webサーバ用のイメージをbuildします docker-compose build # DBの定義をDBに反映します docker-compose run web php demo_app/oil refine migrate:current # webサーバを起動します docker-compose up -d web
動作確認します
boot2dockerのIPアドレスを確認し、http://[boot2dockerのIPアドレス]:3000ポートにアクセスし、動作を確認します。
boot2docker ip
次回
今回は開発環境の構築までDockerで行いました。次回はテスト環境、リリースへ向けて環境を整備していきたいと思います。
次世代システム研究室では、グループ全体のインテグレーションを支援してくれるアーキテクトを募集しています。インフラ設計、構築経験者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。
皆さんのご応募をお待ちしています。
グループ研究開発本部の最新情報をTwitterで配信中です。ぜひフォローください。
Follow @GMO_RD