Docker上の単一コンテナで複数 DokuWikiを動かしたい。
bitnamiがDokuWikiのimageを用意してくれているが(linuxserverも人気があるみたいだがUpできなかった)、1コンテナ1wikiで動くのが基本っぽい。
都合により、複数のWikiを動かしたいが(会社でやっていることの動作テスト)同じapacheやphpを積んだコンテナを複数起動するのもなんか変な感じなので一つのコンテナ上で複数のDokuWikiを動かしてみた。
QNAP上でやったのは何か意図するものがあるわけではなく、私の環境で手っ取り早く実行できる環境がQNAPだっただけです。
どうしたか
php8.2+apacheなimageからコンテナを作成。そこにDokuWikiを展開して起動する。以上。
ディレクトリ構造
qnap@qnap:~/docker/dokuwiki$ tree -L 2
.
├── docker-compose.yml
├── Dockerfile
└── html
├── wiki1 ★dokuwiki~~.tgzを展開済のディレクトリ。
├── wiki2 ★dokuwiki~~.tgzを展開済のディレクトリ。
└── dokuwiki-a6b3119b5d16cfdee29a855275c5759f.tgz
docker用ファイル
version: '3'
services:
dokuwiki:
container_name: 'dokuwiki'
hostname: 'dokuwiki'
build:
context: .
dockerfile: ./Dockerfile
ports:
- "8082:80"
volumes:
- ./html:/var/www/html
FROM php:8.2.10-apache-bullseye
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV TERM xterm
dokuwikiはテキストファイルで直接加工できることが非常にメリットなので、ローカルディレクトリをコンテナにマウントしています。
dockerコンテナの作成
何も考えずにDockerコンテナ作成&起動します。
qnap@qnap:~/docker/dokuwiki$ docker compose up -d
[+] Building 41.4s (7/7) FINISHED
~~snip~~
[+] Running 2/2
⠿ Network dokuwiki_default Created 3.3s
⠿ Container dokuwiki Started 3.5s
qnap@qnap:~/docker/dokuwiki$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2e20002bXXXX dokuwiki-dokuwiki "docker-php-entrypoi…" 13 seconds ago Up 10 seconds 0.0.0.0:8082->80/tcp dokuwiki
dokuwikiのdownload&展開
dokuwikiのtarをDLし、html
ディレクトリに設置後展開、好きなWIKI名にします。
Dokuwiki Download Page
qnap@qnap:~/docker/dokuwiki/$ cd html
qnap@qnap:~/docker/dokuwiki/html$ curl -s https://download.dokuwiki.org/out/dokuwiki-a6b3119b5d16cfdee29a855275c5759f.tgz -o dokuwiki-a6b3119b5d16cfdee29a855275c5759f.tgz
qnap@qnap:~/docker/dokuwiki/html$ tar -xf dokuwiki-a6b3119b5d16cfdee29a855275c5759f.tgz
qnap@qnap:~/docker/dokuwiki/html$ mv dokuwiki wiki1
qnap@qnap:~/docker/dokuwiki/html$ cp -r wiki1 wiki2
起動したら
うまく起動してくれたら、後はdokuwikiのinstall.php
をたたけばOk。
http://<serveaddress>:8082/wiki1/install.php
http://<serveaddress>:8082/wiki2/install.php
※もしかしたらパーミッションでなにかエラー出るかも。以下のページなどを参照して適切に処置する。
めんどくさがってchmod 777 -R *
とかやって重篤なセキュリティ問題を引き起こしても知らない。
dockerでvolumeをマウントしたときのファイルのowner問題
dokuwikiはwebサーバとphpさえ動いていれば起動させるまでのハードルは低いので、専用イメージを使うよりもこちらのほうが汎用性あるかもしれないかな。
dokuwikiのハードルはむしろ起動後のPluginのInstallかもしれん。