【2023年】これからブログを始める人へおすすめの書籍

Kissy

Docker for Windowsの使い方!ローカルでウェブサイトを作ろう!

作成: 更新:

WordPress
みなさんは自分のPCでWordPress使っていますか?

この記事ではDocker for Windowsを使ってローカルにWordPress環境を作る方法を紹介します。

おそらくブログを作っている方でも、レンタルサーバーは持っているけど自分のPCに入れている人は多くないと思います。

本番環境とは別に開発環境としてWordPressを持っていると、いろいろ実験できるので、WordPressを使っている方は是非チャレンジしててみてください。

背景

ぼくは今のところBloggerを使っていて、当面変える予定はないのですが、WordPressの質問を受けることが多くなってきました。(WordPress環境もってないんですけど。。)

とはいえ、何とか力になりたいなぁと思い、WordPress環境を自分のPCに入れられないものかと調べていたら見つかりました。それがDocker for Windowsです。

先日、ローカルにWordPress環境を作る方法として、XAMPPの使い方の記事を書いています。

XAMPPは自分のPCに直接XAMPPをインストールしているので、PCが汚れてしまうのが嫌でした。それにセキュリティ的にもよろしくないと思い、ほかのものを探していたところDocker for Windowsに出会いました。

Docker for Windowsは仮想環境上に構築するので、基本的に自分の環境を汚さないで作れます。

前提条件

Docker for WindowsのOS要件は以下になります。

  • Windows 10 Professional build 14393以降
  • Windows 10 Enterprise build 14393以降
  • Windows Server 2016
    これはDocker for WindowsがHyper-Vを使用するためです。

もしHomeなどそれ以外のOSの場合はDocker toolboxを使用することで利用できます。Docker toolboxについては別の機会があれば記事にしたいと思います。

Docker for Windowsのインストール

Hyper-Vを有効にする

  1. [コントロールパネル]を開く。
     を押下し、controlと入力します。するとコントロールパネルが表示されるので選択します。
     メニュー
  2. Docker for Windowsのインストールの前にHyper-Vを有効にしておきます。[コントロールパネル]を開き[プログラムと機能]を選択します。
    コントロールパネル
  3. [プログラムと機能]で[Windowsの機能の有効化または無効化]を選択します。
    プログラムと機能
  4. [Hyper-V]にチェックをつけ、[OK]を押します。
    Windowsの機能
    [OK]を押すとインストールが始まります。
    必要なファイルを検索しています
    しばらくするとインストールが完了します。
    必要な変更が完了しました。
  5. これでHyper-Vが有効になりました。

Docker for Windowsをインストールする

  1. Docker for Windowsをダウンロードする
    下記のサイトからDocker for Windowsをダウンロードします。Docker for WindowsをダウンロードするにはDockerアカウントが必要なため、アカウントを作成してダウンロードします。
    Docker for Windows

  2. Docker for Windowsのインストーラーを起動する

    Hyper-Vを使うので、[User Windows containers instead of Linux containers]はオフにします。[OK]を押すとインストールが始まります。
    Configuration

    インストール中。
    Unpacking files

    インストール完了です。
    Installation succeeded

    インストールが完了するとDocker for Windowsが起動します。
    Welcome

  3. Docker for Windowsがインストールされたか確認する

    Docker for Windowssの操作は基本的にPowerShellにコマンドを入力して行います。実際にコマンドを入力して動作するかを確認します。

    以下のコマンドの例ではPS>と書かれている部分の右がコマンドです。実際に入力する際はPS>の右側を入力してください。

    なお、PowerShellは「Windows PowerShell」を使用してください。「Windows PowerShell ISE」だと正しく動作しません。

    まずは、dockerから動作を確認します。正しく動作していればバージョンが表示されます。

    PS> docker -v
    Docker version 18.09.0, build 4d60db4
    

    次に、docker-composeを確認します。正しく動作していればバージョンが表示されます。

    PS> docker-compose -v
    docker-compose version 1.23.2, build 1110ad01
    
  4. インストール完了です。

Docker for Windowsの共有設定を行う

Docker for Windowsのコンテナは仮想環境で動作するので、Windowsのドライブを共有して仮想環境からもアクセスできるようにします。

  1. タスクトレイにDocker for Windowsのアイコンがあるので右クリックし、[Settings]をクリックします。
    Settings

  2. [Shared Drives]を開き、共有設定をしたいドライブにチェックし、[Apply]をクリックします。
    Shared Drives

  3. すると、dockerにファイルアクセスを許可するためにWindowsのログインが要求されます。表示されたらパスワードを入力して認証します。
    UAC

  4. これで共有設定は完了です。

WordPressとMySQLの構築

続いてWordPressとMySQLを構築していきます。

WordPressとMySQLの構築は、dockerコマンドを1ずつ入力して構築することもできますが、ここではdocker-compose.ymlを作成して構築します。

docker-compose.ymlは料理で言えばレシピに当たるもので、これを作成しておけば、他の人でも、他のPCでも同じWordPress環境を作成できるというメリットがあります。

  1. Docker for Windows用のフォルダの作成
    先ほど共有設定をしたドライブにDocker for Windows用のフォルダを作成します。この記事では、d:\docker\wordpressを作成しました。

    このフォルダに、MySQLやWordPressのデータが格納されることになります。

  2. docker-compose.ymlの作成
    Windowsでも動作するdocker-compose.ymlを以下に記載します。作成したdocker-compose.ymlは先ほど作成したDocker for Windows用のフォルダ(d:\docker\wordpress)に保存しておきます。

    version: '3.3'
    
    services:
       mysql:
         image: mysql:5.7
         volumes:
           - ./mysql:/var/lib/mysql
         restart: always
         environment:
           MYSQL_ROOT_PASSWORD: somewordpress
           MYSQL_DATABASE: wordpress
           MYSQL_USER: wordpress
           MYSQL_PASSWORD: wordpress
    
       wordpress:
         depends_on:
           - mysql
         image: wordpress:latest
         ports:
           - "8080:80"
         volumes:
           - ./html:/var/www/html
         restart: always
         environment:
           WORDPRESS_DB_HOST: mysql:3306
           WORDPRESS_DB_USER: wordpress
           WORDPRESS_DB_PASSWORD: wordpress
    volumes:
        db_data: {}	
    

    volumesにはMySQLとWordPressデータの保存先のパスを記載していますので、自分の環境に合わせて書き換えてください。

    environmentには、ユーザー名やパスワードを記載しているので、これもご自身の好きなものに書き換えてください。

  3. WordPressとMySQLを構築する
    先ほど作成したdocker-compose.ymlを使ってWordPressとMySQLを構築します。
    まずはPowerShellを起動して、Docker for Windows用のフォルダに移動します。

    PS> d:
    PS> cd d:\docker\wordpress
    

    次に以下のdocker-composeで構築をします。

    PS> docker-compose up -d
    

    構築に成功すると以下がPowerShellのコンソールに出力されます。

    Pulling db (mysql:5.7)...
    5.7: Pulling from library/mysql
    177e7ef0df69: Pull complete
    cac25352c4c8: Pull complete
    8585afabb40a: Pull complete
    1e4af4996053: Pull complete
    c326522894da: Pull complete
    9020d6b6b171: Pull complete
    55eb37ec6e5f: Pull complete
    1a9d2f77e0e7: Pull complete
    d7e648ad64aa: Pull complete
    4120d828ea6b: Pull complete
    3b39dc5451af: Pull complete
    Pulling wordpress (wordpress:latest)...
    latest: Pulling from library/wordpress
    177e7ef0df69: Already exists
    9bf89f2eda24: Pull complete
    350207dcf1b7: Pull complete
    a8a33d96b4e7: Pull complete
    c0421d5b63d6: Pull complete
    f76e300fbe72: Pull complete
    af9ff1b9ce5b: Pull complete
    d9f072d61771: Pull complete
    a6c512d0c2db: Pull complete
    5a99458af5f8: Pull complete
    8f2842d661a0: Pull complete
    3c71c5361f06: Pull complete
    baeacbad0a0c: Pull complete
    e60049bf081a: Pull complete
    78603f38298c: Pull complete
    c524c8ab00a2: Pull complete
    88bb355773ee: Pull complete
    0914e1413916: Pull complete
    2cafe2fa9259: Pull complete
    Creating wordpress_db_1 ... done
    Creating wordpress_wordpress_1 ... done
    
  4. WordPressにアクセスしてみる

    ブラウザを起動して、URLにlocalhost:8080と入力してください。無事WordPressが表示されました!
    WordPress

アクセスしても応答がなく、以下のように表示される場合は1分ほど少し時間を置いてからアクセスしてみてください。
 応答なし

その他、使い方

次回以降の起動方法

docker-compose up -dコマンドはdocker-compose.ymlファイルにしたがって環境を構築します。2回目以降は環境の構築が不要なので、起動・停止する場合は、以下のコマンドで起動と停止ができます。

<起動する場合>

PS> docker-compose start

<停止する場合>

PS> docker-compose stop

コンテナを削除する方法

コンテナを削除する場合は、以下のコマンドを使用します。

<削除する場合>

PS> docker-compose rm

注意する点としては、起動時と削除時のdocker-compose.ymlが同一である必要があります。もし違っていると、正常に削除されない場合があります。これはdocker-compose stopでも同様です。

エラーが出る場合

まだdockerに慣れていないせいか、結構エラーに遭遇します。エラーが出た時の対処方法を記載しておきます。

docker-compose up -dでエラーが出る場合

docker-compose up -dコマンドを実行すると、以下のようなエラーが出る場合があります。

Pulling db (mysql:5.7)...
ERROR: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

この場合は、[Settings]-[Network]-[DNS Server]の設定を[Fixed]に変更します。IPアドレスは[8.8.8.8]のままで問題ありません。これで再度docker-compose up -dを実行してみてください。
Network

Windows再起動後、WordPressが立ち上がらない

理由がわかっていませんが、Windows再起動後にdocker-compose startで起動しようと思っても起動しない場合があります。

原因はWindows起動直後、まだdockerが立ち上がっていない状態でコンテナを起動しようとしているためです。

dockerが立ち上がると以下のような通知が表示されます。通知の表示を待ってコンテナを起動すると問題なく立ち上がります。

docker立ち上がりの通知

ポートがすでに割り当てられてしまっている場合

コンテナを立ち上げた場合に以下のようなdriver failed programming external connectivity on endpointエラーが発生する場合があります。

ERROR: for wordpress1_wordpress_1  Cannot start service wordpress: driver failed programming external connectivity on endpoint wordpress1_wordpress_1 (f774d6afbe664a9ca3c16ae3362660bec9ecf304acd40ba2ee57cce054d086eb): Error starting userland proxy: mkdir /port/tcp:0.0.0.0:8000:tcp:172.19.0.3:80: input/output error

このエラーはポートがすでに割り当たっている場合に起きるエラーのようです。おそらく以前使用していたコンテナのポートが残ってしまっているのが原因のようです。

この場合もDocker for Windowsを再起動すると解決します。

まとめ

XAMPPと比べて使えるOSが限定されますし、dockerコマンドなど覚えることもいくつかあって、少し手間な印象です。ですが一度作ってしまえば、何度でも同じ環境を構築できるのは大きな魅力ですね。

最後まで読んでいただきありがとうございます。
また読んでくださいませ。
そんじゃーね。

参考サイト

Docker DocumentationにもWordPress環境の作り方が記載されています。Docker Documentationの記載はLinux環境を前提としているので、Windows環境では動作しないことがありますので、注意が必要です。
Quickstart: Compose and WordPress | Docker Documentation

関連記事

SPONSORED LINK
SPONSORED LINK