ownCloudは構築済みの環境がDockerイメージとしても提供されているので、これを利用することにする。NASの環境を汚さないで済むし、WebサーバやPHPの実行環境の準備に時間を取られず、楽だからだ。ownCloudはMySQLやPostgreSQLなどのDBを必要とする(今回はMySQLを利用した。使わないでもsqliteを使って動くものの、推奨されないようだ)が、これもownCloud専用のDBサーバをDockerコンテナで準備することにする。本記事においてパス名やポート番号など、本質的でない部分については僕が実際に設定する際に使ったものから変更してある部分がある。構築MySQLの配置MySQLもDockerイメージが公開されているのでこれを利用する。MySQLのコンテナを配置する。DBの実体のファイルが置かれる場所がホスト上に必要なので、まずはこれを作成する。/var/docker/mysql-owncloud/var/lib/mysql早速MySQLのコンテナを動作させる。MySQLのrootパスワードを何にするか指定する。今回はownCloud専用にDBを作るので、rootユーザをアプリケーションからも使うことにする。コマンドを使って一般ユーザを作ること。指定することで、コンテナの初回起動時にここで指定された名前の新規のDBを作成できる。dockerのデーモンが再起動した時やサーバが再起動した時にコンテナを(たとえその直前に終了されていようとも)起動するオプションである。動作するユーザの変更DBの準備ができたところで早速ownCloudを動かしたいところだが、ここで1つ問題がある。あるため、ownCloud(のコンテナ内で動くApache。動いている)から見ることができない。ホームディレクトリの所有者やパーミッションを変更するのは影響が大きいため、Apacheが動作するユーザをディレクトリの所有者に変更することにした。当然ながら、僕のように既存のディレクトリを管理させたいという要件がない場合はこの手順は必要ない。いうことで、公式のDockerイメージに変更を加える。それぞれ管理させるディレクトリの所有者のuidとusernameにする。する処理が含まれているため、Apacheの設定だけでなくこのスクリプトについても書き換えている。以上でカスタマイズされたイメージの準備が整った。永続化の設定をするだけだ。MySQLの時と同様に、ホスト上のファイルシステムに設定を保存するディレクトリを作成する。/var/docker/owncloud/var/www/htmlあとは起動するだけだ。上で設定したMySQLコンテナの名前を指定する。MySQLコンテナに接続できるようにする。この例ではホストのTCP10080番ポートをコンテナのTCP80番、すなわちownCloudのWebUIが提供されるポートにマッピングしている。外部からownCloudに接続できるようになる。以上まででownCloudが動作する環境が整った。接続すると上記の初期設定画面が表示される。管理者のユーザ名とパスワードを設定し、「ストレージとデータベース」をクリックすると表示されるDBの設定も忘れずに行う。したMySQLコンテナの名前で良い。その他データベース名や資格情報を変更した場合は適宜変更すること。入力したら「セットアップを完了します」ボタンをクリックする。最後に、ownCloudにデータ置き場として使っているディレクトリを読みこませる。適切に設定(今回は空白=全てのユーザ)設定後、トップページに戻れば、以下のように外部ストレージが追加され、クリックすれば当該のディレクトリ内のファイルを閲覧できることが確認できる。以上でownCloudの構築は完了となる。