intellista

engineer's notes about application development, data analysis, and so on

PukiWikiをDockerで見る手順は、たったの3ステップ!

こんにちは!
今回は「PukiWiki」を「Docker」で見る手順をご紹介します。

きっかけ

きっかけは、2019年頃、長年利用していた無料Webホスティングの終了です。
終了により、公開していた私の個人メモ用サイト(「PukiWiki」を利用)も一緒に消滅しました。
サイトはまるごと消滅前に救出したので問題ないのですが、Web形式で見られないのは本当に不便です。
そこで、「Docker」のWindows版である「Docker for Windows」を使って、簡単に本来のWeb形式で見られるようにしました。

ということで今回は「Docker for Windows」を使って「PukiWiki」を見られるようにする方法をご紹介します。

この記事の前提環境

この記事の前提環境は次のとおりです。

なお、私が「Docker for Windows」を導入したころの「Windows10 Home」には「WSL2」が入っていませんでした。
ですが、「Windows10 Home」で「Windows Insider Program」に参加すると、 「WSL2」が入れられたのです。
Windows Insider Program」について次の記事があります。
※個人的には「Windows Insider Program」はオススメできませんが、ご参考頂ければ嬉しいです。
intellista.hatenablog.com

Dockerについて

「Docker」をご存知ですか?
「Docker」とはコンテナ型の仮想環境によりアプリケーションを開発・配置・実行するプラットフォームです。
仮想VM(Virtual Machine)のように物理マシンを仮想化するのではなく、「Docker」はもっと小さな単位(アプリケーション単位、サーバ単位、など)で仮想化します。
前者はハードも含めて仮想化しますが、後者はハードは仮想化せず共有します。
前者に比べて後者はとにかく軽量です。
そのため、近年の台頭がめざましいです。

私はすでに台頭してから知りました。
図書館でとてもわかり易くシンプルな書籍に出会い、ひとりハンズオンしました。
次の「自宅ではじめるDocker入門」という本です。

自宅ではじめるDocker入門 [改訂版] (I/O BOOKS)

この本でひととおりのDockerの操作(Docker Composeも含む)まで習得できました。
説明も例もシンプルかつわかりやすく、本当に助かりました。

ちなみに、「Docker」を使わずにホストOSにそのままPHPやWebサーバをインストールしても、この記事の目的は果たせます。
ですが、あえて「Docker」を使った理由は、次の2点です。

  • ホストOSの環境をできるだけシンプルに保ちたい(いろいろ入れると不安定になりやすい)ため
  • 環境のコピー、バックアップ、引っ越しが超簡単なため
    ※定義ファイルとPukiWiki一式のファイルコピーだけでOK

PukiWikiについて

PukiWiki」をご存じですか?
PukiWiki」とは、自由にページを追加・編集・削除しながらWebドキュメントを構築できる「コンテンツ管理システム」(CMS)のひとつで、日本でつくられたオープンソースのシステムです。
「システム」といっても導入は簡単で、PHP環境にダウンロードしたソース一式を解答すば、いとも簡単に立ち上げられます。
導入が簡単な割に、本格的にドキュメンテーションでき、カスタマイズもし放題なのがとても良いと思います。
290ページ程度という厚くも薄くもないボリューム感もちょうど良かったです。
基本を一気に習得できました。

Dockerを使ってPukiWikiを簡単に見られるようにする方法

Dockerを使ってPukiWikiを簡単に見られるようにする手順を説明します。

フォルダ構成

次のフォルダ構成を前提に手順を説明します。

任意のフォルダ
  src
  docker-compose.yml

src配下に、PukiWikiの配布媒体を展開したもの(運用中のものでもOK)を入れます。
(私の場合は1.4.7を1.5.0にアップデートしたので、Updateファイルも入っていますが、なくても大丈夫です。 )

手順は3ステップだけ!

DockerでPukiWikiを見られるようにする手順は、たったの3ステップです。

  • (1) 定義ファイルの作成
  • (2) 起動バッチの作成と実行
  • (3) ブラウザでアクセス

それでは順に見ていきます。

(1) 定義ファイルの作成

まず、Dockerのコンテナの定義ファイルを作ります。
次の内容のファイルを作り、docker-compose.ymlというファイル名で保存します。

version: "3"
services:
  web-container:
    image: php:5.5-apache
    volumes:
      - ./src/:/var/www/html/
    ports:
      - 8088:80
    expose:
      - 80

このファイルはDockerの各地機能であるDocker Composeという機能の定義ファイルです。

次のようなことを定義しています。

  • 今回前提としたPukiWikiのバージョン(1.5.0)に対応するPHPの公式コンテナ(WebサーバのApache付き)を使う。
    初回実行時には自動的にダウンロードする。
  • 定義ファイルdocker-compose.ymlと同じフォルダにあるsrc(PukiWiが入っているフォルダ)を、コンテナ内のデフォルトのWeb公開用フォルダ(/var/www/html/)に紐づける。
  • ポート番号8088でアクセスできるようにする。
(2) 起動バッチの作成と実行

次のコマンドをバッチファイルにして、実行します。

docker-compose up -d
pause

このコマンドの意味は、同じフォルダにある定義ファイル((1)で作ったもの)を読み込んで、定義内容を実行する、という意味です。

実行すると、次のようになります。

ついでに停止バッチも作っておきましょう。
中身は次の通りです。

docker-compose stop
docker-compose rm
pause

ところで、起動バッチを実行すると、コマンドプロンプトに次のようなエラーが出る場合があります。

error while creating mount source path '/host_mnt/Users/~': mkdir /host_mnt/Users/~: file exists

例えば、次のような感じです。

この場合、上記のURLにアクセスしてもトップページは表示されません。

こんな時は、タスクトレイのDockerアイコンからメニューをたどり、Dockerを再起動すると直るようです。

私の場合、再起動してバッチファイルを実行し直すと、エラーは解消しました。

なお、バッチファイルにするのは必須ではありません。
しかし、毎回同じコマンドを打つくらいなら、たとえ簡単なコマンドでもバッチファイルにしたほうが効率的です。

(3) ブラウザでアクセス

最後にブラウザで次のURLにアクセスすると、PukiWikiのトップページが表示されます。

http://localhost:8088

まとめ

今回は、Dockerを使ってPukiWikiを簡単に見られるようにする方法をご紹介しました。
もし、私と同じように「PukiWiki」をDockerに載せたい、というニーズがありましたら是非、参考にしてみてください!