Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
51
Help us understand the problem. What is going on with this article?
@sayama0402

docker-composeで作るWordpress環境

More than 3 years have passed since last update.

はじめに


Vagrantが重過ぎるので、dockerに乗り換えがてら、wordpress環境をサクッと作ってみる。

やりたいこととしては、wordpressのtheme編集が出来て、データベースは非エンジニアでも触れるようにしておけば、使い勝手もいいだろうということでphpmyadminも使えるようにしておく。

なおdocker-composeで作るので、共有も簡単に出来ます。

環境は以下

  • Mac OSX 10.12.6
  • docker 17.06.0-ce, build 02c1d87
  • wordpress (公式イメージのlatest)
  • mysql (公式イメージのlatest)
  • phpmyadmin (公式イメージのlatest)

Dockerのインストールに関しては、Docker for Macを入れておけばOK

 

1. ディレクトリ構成


ディレクトリの構成は以下のような構成で作る。
なお今回は作業ディレクトリ名をrootとします。

root/
 ┣ docker-compose.yml
 ┣ db-data/
 ┣ themes/

rootディレクトリ直下にdocker-compose.ymlファイル、db-data/フォルダ、themesフォルダがあります。
それぞれの役割は

// 作成したいコンテナの情報を記述
docker-compose.yml

// docker起動時に最初からデータを入れておきたい場合は、db-dataフォルダ内にsqlファイルを入れておけば勝手にインポートしてくれる
db-data/

// 作成・編集したいテーマフォルダを入れておく。
themes/

 

2. docker-compose.ymlを書く


docker-compose.ymlにdockerイメージの設定なんかを書いていく。
envファイルに環境変数をまとめるやり方の記事が多いが、今回はあくまでもローカルで動かすためなので、envファイルは作らないで書く。

version: "2"
services:
  # mysql settings
  mysql:
    image: mysql:latest
    environment:
      - MYSQL_ROOT_USER=root
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=hoge
      - MYSQL_USER=wp_user
      - MYSQL_PASSWORD=root
    volumes:
      - db-data:/var/lib/mysql
      - ./db-data:/docker-entrypoint-initdb.d
    ports:
      - 3306:80

  # Wordpress settings
  wordpress:
    image: wordpress:latest
    ports:
      - 80:80
    depends_on:
      - mysql
    links:
      - mysql
      - phpmyadmin
    environment:
      - WORDPRESS_DB_HOST=mysql:3306
      - WORDPRESS_DB_NAME=hoge
      - WORDPRESS_DB_USER=wp_user
      - WORDPRESS_DB_PASSWORD=root
    volumes:
      - ./themes:/var/www/html/wp-content/themes
  # phpmyadmin settings
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=mysql
      - PMA_USER=root
      - PMA_PASSWORD=root
    links:
      - mysql
    ports:
      - 8080:80
    volumes:
      - /sessions
volumes:
  db-data:
    driver: local

 

3.開発方法


適当な作業ディレクトリを作成し、上記のdocker-compose.ymldb-data/themes/を配置する。

めんどくさい方はhttps://github.com/ken-sayama/docker-for-wordpress githubにサンプル置いておきます。

そのディレクトリでdocker-compose up -dをおこなえばwordpress環境が立ち上がります。
 

4.アクセス


上記でブラウザで表示確認が可能

5.補足

既存で運営してるサイトのローカル開発環境としたいのであれば、dumpしたsqlファイルをdb-dataフォルダ内に配置して、docker-compose up -d

プラグインの依存関係などもあり、wordpressのプラグインフォルダもホストで管理したい場合は、volumesの設定を以下のように書き換える。

# Wordpress settings
  wordpress:
    image: wordpress:latest
    ports:
      - 80:80
    depends_on:
      - mysql
    links:
      - mysql
      - phpmyadmin
    environment:
      - WORDPRESS_DB_HOST=mysql:3306
      - WORDPRESS_DB_NAME=hoge
      - WORDPRESS_DB_USER=wp_user
      - WORDPRESS_DB_PASSWORD=root
    volumes:
      - ./themes:/var/www/html/wp-content/themes
      # 以下を追加
      - ./plugins:/var/www/html/wp-content/plugins

以上何かあればコメントください

51
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
sayama0402
Javascript(Riot.js / Vue / React / Nodejs) / PHP(Wordpress, cakePHP, Laravel) / Ruby(Ruby on Rails) / Python(Django) / SQL / Linux / Swift / Docker / AWS / Serverless

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
51
Help us understand the problem. What is going on with this article?