Plesk + Docker で Subversion を外部公開

Plesk + Docker で Subversion の外部公開をやってみて、運用からしばらくたったので、忘れないうちに記事化。

Docker

Docker って最近聞きはするけど何なのか全く理解できてなかった。

Dockerの基本について周辺環境まで含めてまとめ - Qiita
# Dockerとは コンテナベースのアプリケーションを仮想化したもの。軽量なVMの様に見えるがこれまでの(VirtualBoxなど)VMでは実現が難しい、不可能であったユースケースを解決してくれる。 - ホストOSとリソースを...

要するに仮想環境なんだけど、VM のようにゲスト OS やライブラリを全て個別に持つのではなく、
ホスト OS やリソースを共有をするので、VM よりも軽量で効率的なものらしい。

コンテナ

Docker では、ひとまとめになったパッケージをコンテナという。
Docker Hub (https://hub.docker.com/) では、有志が作ったコンテナが大量に置かれており、
公開扱いになっているものは、ここから自由に選択して導入することができる。

Dockerコンテナをクラウドサービス上で共有できる「Docker Hub」を使ってみる | さくらのナレッジ
近年注目されているコンテナ作成ツール「Docker」向けに、作成したコンテナを公開するための「Docker Hub」というサービスが開始された。今回はDockerで作成したコンテナをこのDocker Hubにて公開する方法を紹介する。 Dockerとは 前回/前々回の記事ではLinux上でコンテナ環境を構築するためのツ...

必要なライブラリなどがひとまとめに、かつ、セットアップされた状態でコンテナ化されている。
なので、よく linux 系でありがちな、足りないパッケージをインストールしたり、設定ファイルの編集したり、バージョン違いでうまくいかなくて悩んだり・・・。
そういった面倒なことをせずにサービスを立ち上げることができる。

Plesk 環境での Docker

Using Docker
Plesk Documentation portal provides access to the latest Plesk documentation and Release Notes. The portal also hosts Plesk video tutorials and FAQ. An archive ...
Plesk – Docker を使ってWebアプリケーションをサクッと立ち上げよう | さくらのナレッジ
Plesk – Docker を使ってWebアプリケーションをサクッと立ち上げよう あけましておめでとうございます。昨年の夏からPleskの記事提供を始めて、もう年が変わってしまいました。Pleskも昨年10月に新バージョンとなるPlesk Onyxがリリースされ、各事業者社様のクラウドサービスでも少しずつ提供開始され...

Plesk 環境だと、サーバー管理画面から Docker の起動やオプション設定ができる。
コマンドを入力せずにサービス立ち上げまで問題なくできてしまう。
いいのか?こんな楽して・・・と思うぐらい呆気ないほど簡単。

Subversion のいい感じの Docker コンテナを探しインストール

Plesk の Docker を選択する。
検索テキストボックスから直接 Docker Hub の検索ができる。

今回は、CollabNet Subversion Edge のコンテナを選択した。

使用するポート番号がしっかり記載されており助かる。
実行を押すと、ダウンロードが始まる。

ダウンロード終了後、設定画面になる。

今回ダウンロードしたコンテナは、

The container exposes the following ports:

3343 – HTTP CSVN Admin Sites
4434 – HTTPS CSVN Admin Sites (If SSL is enabled)
18080 – Apache Http SVN

とあるので、外部公開する場合は、これらのポートをマッピングする必要がある。
自動マッピングのチェックを外して、自分で設定したいポートに振り返る。

ボリュームマッピングに関しては、自分の好きなところに設定すればいいと思う。
plesk の場合は、ファイルマネージャーで管理しているディレクトリを指定しておいたほうが後々便利かもしれない。
その場合は一度コンソールからパスを確認しておき、そのパスを割り当てる。
plesk のファイルマネージャーで管理されているディレクトリパスは、

/var/www/vhosts/(ホスト名)

って感じだったので、その下に csvn と名前の付いたディレクトリを作り、その下にマッピングすることにする。

環境変数は特にいじらず、デフォルトのままで問題ない。

設定が終わったら、OK を押すと、このようにコンテナが起動する。

Plesk (nginx) の Docker プロキシルールを設定する

Using Docker
Plesk Documentation portal provides access to the latest Plesk documentation and Release Notes. The portal also hosts Plesk video tutorials and FAQ. An archive ...

外部に指定したポートを公開するには、 nginx 側での設定が必要になる。
「ウェブサイトとドメイン」→「Docker プロキシルール」を選択する。

「ルールを追加」で、コンテナと設定したポートを選択。

追加すると、以下のようにリスト表示される。

http://(ホスト名):(3343のターゲットポート)
もしくは、https に対応している場合は
https://(ホスト名):(4434のターゲットポート)

でアクセス。
以下のように、CollabNet Subversion Edge のログイン画面になれば成功。

CollabNet Subversion Edge の設定

起動初期状態で、ユーザ名、パスワードともに admin になっているので、ログインしたらまずパスワードを変更する。

サーバー設定。特に難しいことはない。
ただし、注意として、ポート番号とリポジトリディレクトリ・バックアップディレクトリは、Docker 側と一体になっているので、いじらないほうがいい。

Subversion を起動。

こうなっていれば OK
そこに書かれているように、svn のリポジトリ URL、web 上での閲覧サービスの URL が表示される。

svn のリポジトリ追加

こんな感じで、web 上だけで管理が可能。

また、ユーザー管理に関しても web 上だけで操作できるため、まずコマンドを触ることなく管理ができて楽ちん。

バックアップ

CollabNet Subversion Edge では、定期バックアップ機能があるので、それを使ってバックアップ可能。

が、今すぐバックアップを取る機能はないので、そういう場合はコマンドから手動で。

svnadmin dump リポジトリパス > ダンプファイル名