LoginSignup
7
5

More than 5 years have passed since last update.

docker-composeでWordPress環境構築

Last updated at Posted at 2016-12-01

前提

dockerコマンド、docker-compose、docker-syncの基本は理解しているものとして
docker-composeで単一コンテナ内でvirtualhostで複数のワードプレスを設置する環境を
サクッと準備できるようにする。

環境:


・Macbook air El Capitan 10.11.6
・docker for mac
・docker-sync

dockerの個人的イメージ(随時変えていきます)

スクリーンショット 2016-12-01 15.24.27.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

amznlinuxのDockerfile

APPサーバ構築用のDockerfileです。

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

公式イメージをほぼそのまま使用しているので特に変わったことはしてません。
ホントに公式呼んでるだけ

Dockerfile
FROM mysql:5.6.34

各種設定ファイル

マウントしたりコピーしたりしているphp.ini、my.cnf、httpd.confについては必要があれば上書きしましょう
githubにはダミーをいれてあります。(動きますが適当なのでよく読んで下さい)

docker-compose.yml

こちらはdocker-composeコマンドを使用したとき読み込まれるファイルですがDockerfileが各コンテナごとにガリガリ書いていく感じでdocker-composeはDockerfile内でEXPOSEなどの設定をまとめて行うことができたり、コンテナ同士の依存関係を指定したりします。

docker-compose.yml
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の設定を上書きします。

docker-compose-dev.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よりご確認下さい

docker-sync.yml

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ディレクトリを空にしてそのうち上げますので
興味があれば遊んでみて下さい

最後まで駄文にお付き合い頂いた方々はありがとうございました。
ちなみにこの記事は以前の記事の焼き増しです。

7
5
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
7
5