Perl Hackers Hub
第34回 DockerによるPerlのWebアプリケーション開発(3)
ミドルウェアをDocker化する方法
ここまで,
ミドルウェアをDocker化するメリット
ローカル環境で複数プロジェクトの開発を行っていると,
そこで,
ミドルウェアをDocker化するために必要なこと
Webアプリケーション開発の文脈でミドルウェアをDocker化するためには,
- ① 1つのミドルウェアを1つのコンテナとして起動する
- ② Webアプリケーションのコンテナと各ミドルウェアのコンテナをリンク機能で接続する
- ③ 接続された複数のコンテナの起動・
停止を, 1つのまとまりとして管理する
①については前述しましたので,
コンテナの接続
あるコンテナから別のコンテナ,
ここでは例として,db
という名前で起動しておき,--link
オプションでWebアプリケーションコンテナとリンクさせます
各コンテナの起動
$ docker run -d --name db mysql:5.6
$ docker run -p 5000:5000 -v ./:/code -v ./local:/cpan --link db:db docker-sample-runtime carton exec plackup -a script/local-server
リンクの結果,DB_
にMySQLコンテナのIPアドレス,DB_
にMySQLコンテナのポートが設定されます。Webアプリケーションコード内でデータベースのIPアドレスやポート番号を指定する個所があるはずなので,
詳しくは,
- 注3)
- 紙幅の都合上,
MySQLコンテナの起動に必要なMySQLのユーザ名などの環境変数の設定を省略します。
Docker Composeによるコンテナの管理
MySQLなどミドルウェアとの連携を考えると,
Docker Composeは,
使い方は簡単です。まずdocker-compose.
という名前でリスト5のようなファイルを用意します。リスト5にはWebアプリケーションコンテナdocker-compose.
と同じディレクトリにあるものとします。
リスト5 docker-compose.
web:
build: ./
ports:
- "5000:5000"
volumes:
- ./:/code
- ./local:/cpan
links:
- db
command: script/local-server
db:
environment:
- MYSQL_USER=myuser
- MYSQL_PASSWORD=mypass
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
- MYSQL_DATABASE=docker-sample
privileged: true
docker-compose.
と同じディレクトリでdockercompose up
コマンドを実行すると,
各コンテナの起動
$ docker-compose up
この状態で
まとめ
今回はPerlのWebアプリケーションをDocker化する方法について紹介しました。
Dockerは今ホットな領域ということもあり,
さて,
バックナンバー
Perl Hackers Hub
- 第71回 ISUCONの実装から最近のPerlを学ぶ ―わかりやすく変更しやすいコードを実現する考え方と方法(2)
- 第71回 ISUCONの実装から最近のPerlを学ぶ ―わかりやすく変更しやすいコードを実現する考え方と方法(1)
- 第70回 Raisin入門 ―Rest APIマイクロフレームワークを使ってみよう!(2)
- 第70回 Raisin入門 ―Rest APIマイクロフレームワークを使ってみよう!(1)
- 第69回 表形式データを操るUNIXシェル型Perl製コマンド群 ―ビッグデータ時代の汎用的なデータ整備と分析のために(2)
- 第69回 表形式データを操るUNIXシェル型Perl製コマンド群 ―ビッグデータ時代の汎用的なデータ整備と分析のために(1)
- 第68回 他言語のライブラリをPerlに移植する(2)
- 第68回 他言語のライブラリをPerlに移植する(1)
- 第67回 GitHub APIによるチーム開発の効率化 ―基本操作から,GitHub Webhooksの活用まで(2)
- 第67回 GitHub APIによるチーム開発の効率化 ―基本操作から,GitHub Webhooksの活用まで(1)