前提
dockerコマンド、docker-compose、docker-syncの基本は理解しているものとして docker-composeで単一コンテナ内でvirtualhostで複数のワードプレスを設置する環境を サクッと準備できるようにする。環境:
・Macbook air El Capitan 10.11.6 ・docker for mac ・docker-syncdockerの個人的イメージ(随時変えていきます)
![スクリーンショット 2016-12-01 15.24.27.png](https://qiita-image-store.s3.amazonaws.com/0/101607/432d65fc-28d5-5643-40b0-f9a7be7782b5.png)使用するdocker image
最終的にawsへのデプロイを考えているのでdocker hubへも追加されたamazonlinux公式イメージを使用し データベースは仮RDSということでmysqlの公式イメージを使用する。amazonlinux公式
https://hub.docker.com/_/amazonlinux/
mysql公式
https://hub.docker.com/_/mysql/
ディレクトリ構成
![スクリーンショット 2016-12-01 16.27.19.png](https://qiita-image-store.s3.amazonaws.com/0/101607/808879b7-1f6e-b521-4f7a-05efeaf022bf.png)amznlinuxのDockerfile
APPサーバ構築用のDockerfileです。FROM amazonlinux:latest
RUN yum clean all && yum -y update
RUN yum clean all
### Apache
RUN yum install -y httpd
RUN chkconfig httpd on
### MySQL Server
RUN yum install -y mysql mysql-server mysql-client
### PHP
RUN yum install -y php php-mysql php-pear php-cli php-mbstring php-mcrypt php-pdo php-xml
RUN pear install Crypt_Blowfish
RUN pear install -a Mail
# Edit php setting file
COPY php/php.ini /etc/php.ini
EXPOSE 80
CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
解説は割愛しますのでRUNとかCMDとかEXPOSEってなんぞな方は下記URLにてご確認下さい。
http://docs.docker.jp/engine/reference/builder.html
先人に感謝!
mysqlのDockerfile
公式イメージをほぼそのまま使用しているので特に変わったことはしてません。 ホントに公式呼んでるだけFROM mysql:5.6.34
各種設定ファイル
マウントしたりコピーしたりしているphp.ini、my.cnf、httpd.confについては必要があれば上書きしましょう githubにはダミーをいれてあります。(動きますが適当なのでよく読んで下さい)docker-compose.yml
こちらはdocker-composeコマンドを使用したとき読み込まれるファイルですがDockerfileが各コンテナごとにガリガリ書いていく感じでdocker-composeはDockerfile内でEXPOSEなどの設定をまとめて行うことができたり、コンテナ同士の依存関係を指定したりします。version: '2'
services:
amznlinux:
depends_on:
- mysql
build: amznlinux
links:
- mysql
extra_hosts:
- "localpage1.jp:127.0.0.1"
- "localpage2:127.0.0.1"
ports:
- "80:80"
volumes:
- ./amznlinux/httpd:/etc/httpd/conf/
mysql:
build: mysql
ports:
- "3306:3306"
restart: always
volumes:
- ./mysql/data_volume:/var/lib/mysql:rw
- ./sharedata_mysql:/share_data:rw
# - ./mysql/my:/etc/mysql/conf.d
environment:
MYSQL_DATABASE: databasename
MYSQL_ROOT_PASSWORD: password
例によって説明は割愛しますのでわからないことはリファレンスをご確認下さい
http://docs.docker.jp/compose/compose-file.html
そういえばymlって触ったことなかったんですが半角スペース2個で各要素を判別してるんですね
sublimeで改行すると自動でtab入れてくれたので最初build時などにエラーを結構吐いてくれました。
docker-compose-dev.yml
このファイルはdocker-syncを行う際に読み込まれてdocker-compose.ymlの設定を上書きします。version: '2'
volumes:
www:
external: true
services:
amznlinux:
volumes:
- www:/var/www
ここと下のdocker-sync.yml関してはこちらを参考にさせていただきました。
http://cluex-developers.hateblo.jp/entry/2016/11/02/122633
docker-sync.yml
docker-syncはdocker for macを使用して環境を構築した場合ブラウザアクセスが非常に 遅くなってしまうという症状があるため、それを回避するために使用します。 詳細は前項のURLよりご確認下さい
options:
# default: docker-compose.yml if you like, you can set a custom location (path) of your compose file like ~/app/compose.yml
compose-file-path: 'docker-compose.yml'
# optional, default: docker-compose-dev.yml if you like, you can set a custom location (path) of your compose file. Do not set it, if you do not want to use it at all
# if its there, it gets used, if you name it explicitly, it HAS to exist
compose-dev-file-path: 'docker-compose-dev.yml'
syncs:
www:
src: './amznlinux/www'
dest: '/var/www'
sync_strategy: 'rsync'
sync_host_port: 10871
sync_excludes: ['.DS_Store',]
docker syncに関してはdockerと別にインストールが必要なので注意して下さい。
上記ソースに関してはgit hubにWordpressを格納しているwwwディレクトリを空にしてそのうち上げますので
興味があれば遊んでみて下さい
最後まで駄文にお付き合い頂いた方々はありがとうございました。
ちなみにこの記事は以前の記事の焼き増しです。