Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

Windows 10 ProでWordPressをDocker Composeで10分以内で構築してみる

スポンサードリンク

f:id:fa11enprince:20190420105826j:plain Docker for Windowsが入っていれば30秒以内です。
Java大好き人間ですがPHP系の話題を書いてみます。
Dockerは既に入ってるよって人はdocker-composeのための設定から読んでください。

前提条件

Dockerが使える環境であること前提となります。
やや語弊がありますが、ほぼWindows Nativeで使いたい場合、
Windows 10 Professional Edition (64bit)である必要があります(=要Hyper-V)。
もしくはmacOSかLinuxであることが前提になります。
どうしてもWindows Home Editionでdockerを使う場合、 通常はVirtual Box/VMware上にUbuntu/CentOS等をインストールしてそのうえでDockerを使うことになります。
一応Windows Subsystem for Linuxでも可ですが、少し環境構築のハードルは上がると思います。
あとは…Docker Tool Boxなるものがあったのでそれでも良いです。

今回はWindows 10 Professional Editionの場合のみ説明します。

Hyper-Vの有効化

管理者権限で以下のコマンドを入力した後に、Windowsを再起動します。

bcdedit /set hypervisorlaunchtype auto

このあたりは上記コマンドラインでなくてもググるといろいろやり方が書いてあるので、どの方法でやっていただいても結構です。

Docker for Windowsのインストール

https://docs.docker.com/docker-for-windows/install/
よりDocker for Windowsをダウンロードします。
Docker Hubのアカウントが必要ですが、無料ですので作ってしまいましょう。
あとはインストーラーを起動するだけでOKです。

docker-composeのための設定

Win+Rでcmdと入力します %USERPROFILE%になっている(通常C:\Users\[ユーザ名])ことを確認します。
docker-wpディレクトリを作成し、そのディレクトリ内に移動します。

> mkdir docker-wp
> cd docker-wp

docker-compse.ymlのファイルを作ります。
まずはstartコマンドでカレントディレクトリを開きます。

> start .

Explorerが立ち上がるので右クリック等で新規ファイル(テキストドキュメント)を作成し、 F2キー等でdocker-compose.ymlにリネームし、メモ帳等で開き、次の内容を記入します(コピペ) お試し環境のためパスワード等は脆弱な設定になっています。

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: root
       MYSQL_DATABASE: wp_db
       MYSQL_USER: wp_user
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8080:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_NAME: wp_db
       WORDPRESS_DB_USER: wp_user
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data: {}

簡単に記載していることを説明しますと、
データベースであるMySQLとWordPressを入れるようにするのと、
それぞれデータベースのユーザ名とパスワードを指定しています。
また、HTTPでアクセスするときのポートをデフォルトの80から8080へ変更しています。
あとPC再起動のときなどrestart: alwaysで必ず勝手に立ち上がるようにしています。 それが嫌な場合は毎回手動でdocker-compse up/downをする必要があります。

MySQLは5.7系を使うこととします。WordPressは最新版を使います。

docker-compose.ymlのあるディレクトリでdocker-compose up -dを実行します -dはバックグラウンド実行を意味します。

> docker-compose up -d

このとき、右下にクジラが出てきてShare itってのが出てくるのでそれを押します(押さないとエラーになってしまいます) docker pullコマンドが自動的に実行され、最終的にMySQLとWordPressのプロセスが立ち上がります。 確認のため下記のコマンドを実行します

> docker container ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
1a19e6e913ad        wordpress:latest    "docker-entrypoint.s…"   54 seconds ago      Up 52 seconds       0.0.0.0:8080->80/tcp   docker-wp_wordpress_1
4d4964e58524        mysql:5.7.26        "docker-entrypoint.s…"   55 seconds ago      Up 54 seconds       3306/tcp, 33060/tcp    docker-wp_db_1

このように表示されていればOKです。

Chrome等のブラウザにてhttp://localhost:8080 を押します。

WordPressの初期設定画面に行くはずです。

以降、PCの電源をOFFにしても上記URLをブラウザで入力するとWordPressを使うことができます。
それをやめたい場合はymlファイルを編集するか、下記のコマンドを入力すればOKです。

docker update --restart=no [CONTAINER-ID]

PC再起動時の補足

再起動後、 Docker desktop is running ... と出るまで待ってあげましょう。
横着な人は、タスクバーに隠れてるDocker for WindowsのアイコンのSettingsをみて
Docker is runningになっているのを確認しましょう。
結構起動するまで待たされます。

その後、 http://localhost:8080
と打ってあげるとうまくいきます。

参考リンク

https://docs.docker.com/compose/wordpress/
https://qiita.com/shimisunet/items/1406e33e1eeb36665f2c
https://qiita.com/koyo-miyamura/items/a760dd57160155d3b764

次回はUbuntuでの環境構築を書きたいと思います…(あくまで予定)