QNAP TS-431P の Docker で Kanon

Raspberry Pi で構築していたリポジトリサーバを NAS で構築した際のメモです。紆余曲折ありましたが、今は下記のようなキーワードで運用しています
  • QNAP TS-431P の Container Station (Docker) を利用
  • Docker のベースイメージは本家の Ubuntu 14.04
  • KanonConductor ( https://bitbucket.org/jun66j5/kanonconductor )
  • プロジェクトデータファイル、リポジトリデータは NAS の共有フォルダをマウント
作業は大きく3ステップです。
  1. NAS の事前準備
  2. ssh と apache が動作するコンテナイメージを作成
  3. コンテナを作成し KanonConductor をセットアップ

まず、Container Station をインストールして、ssh を有効化します。
AppCenter で ContainerStation をインストール
Control Panel で ssh を有効化
後は、作業PCからお好きなターミナルで NAS に接続し、コマンドラインベースで作業します。
適当な作業フォルダを作成して、下記のファイルを配置し、コンテナイメージを作成します。kanonconductor.tgzは、あらかじめ bitbucket からクローンを作成し、tgz で固めておきます。
[~] # mkdir docker-work
[~] # cd docker-work/
[~/docker-work] # vi Dockerfile
[~/docker-work] # vi supervisord.conf
[~/docker-work] # vi startup.sh
[~/docker-work] # ls -l
-rw-r--r--    1 admin    administ       244 May 24 22:35 Dockerfile
-rw-r--r--    1 admin    administ  51754205 May 24 22:52 kanonconductor.tgz
-rw-r--r--    1 admin    administ       482 May 24 22:22 startup.sh
-rw-r--r--    1 admin    administ       130 May 24 22:03 supervisord.conf
[~/docker-work] # docker build -t ubuntu-apache-ssh:14.04 .
Dockerfile
FROM ubuntu:14.04

RUN apt-get update && \
    apt-get install -y apache2 ssh supervisor

ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf

ADD startup.sh /startup.sh
RUN chmod a+x /startup.sh

ADD kanonconductor.tgz /var/opt/

EXPOSE 80 22

ENTRYPOINT ["/startup.sh"]
CMD ["/bin/bash"]
supervisord.conf
[program:sshd]
command=/usr/sbin/sshd -D

[program:httpd]
command=/usr/sbin/apachectl -D FOREGROUND
startup.sh
#!/bin/bash

mkdir -p /var/run/sshd

# create an ubuntu user
# PASS=`pwgen -c -n -1 10`
PASS=ubuntu

# echo "Username: ubuntu Password: $PASS"
id -u ubuntu &>/dev/null || useradd --create-home --shell /bin/bash --user-group --groups adm,sudo ubuntu
echo "ubuntu:$PASS" | chpasswd

exec /usr/bin/supervisord -n

コンテナイメージが出来上がったら、Container Station でイメージからインスタンスを作成します。
作成したコンテナが起動したら、ssh で ubuntu ユーザとしてログインできます。
起動したコンテナは、まだ apache が動作しているだけなので、KanonConductor のセットアップを続けます。 Docker イメージを作成した時に ADD した kanonconductor.tgz が /var/opt/ 配下に展開されていますので、一部セットアップスクリプトを修正してから、スクリプトを実行します。
ssh ubuntu@192.168.1.7

ubuntu@repository:~$ cd /var/opt/kanonconductor/
ubuntu@repository:/var/opt/kanonconductor$ sudo vi pluginlist
---
下記を編集
svn+http://svn.edgewall.org/repos/trac/plugins/0.12/mercurial-plugin#egg=TracMercurial
 ↓
svn+https://svn.edgewall.org/repos/trac/plugins/0.12/mercurial-plugin#egg=TracMercurial
---
ubuntu@repository:/var/opt/kanonconductor$ sudo bash kanon-setup
セットアップが完了すると、/var/opt/kanon 配下に各種データが生成されるので、これを NAS からマウントした /Repository にシンボリックリンクとして付け替えて、Raspberry Pi で運用していた時のデータに差し替えました。
ubuntu@repository:~$ sudo mv /var/opt/kanon /var/opt/kanon_org
ubuntu@repository:~$ sudo ln -s /Repository/kanon /var/opt/kanon
新しくセットアップした Kanon に以前使っていたアカウントを追加すれば完了です。

QNAP TS-431P の Docker で Kanon” に対して1件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。

前の記事

StraMi をリリースしました

次の記事

Mi Watch Lite の不満