Dropboxのようなソフトウェアで著名なownCloudをラズパイ上のdockerで動かしてみます。
1. ownCloud用のコンテナー
owncloud-dockerのserverでは、owncloud、db、redisと 3つのコンテナーを使用していますが、それぞれのベースイメージは以下のようになっています。
サービス | owncloud | db | redis |
---|---|---|---|
コンテナー | owncloud/server | webhippie/mariadb | webhippie/redis |
ベースイメージ | owncloud/base | webhippie/alpine | webhippie/alpine |
ベースイメージ | owncloud/ubuntu | ||
ベースイメージ | ubuntu:16.04 | alpine:edge | alpine:edge |
これらをラズパイ用として作成することが目標となります。
2. owncloud/serverコンテナーの作成
owncloud/serverは、ubuntuからowncloud/ubuntuを作成し、owncloud/ubuntuからowncloud/baseを作成し、出来上がった owncloud/baseからowncloud/serverを作成していきます。
2.1 owncloud/ubuntuコンテナーの作成
まずowncloud/ubuntuをクローンして、ラズパイ用に修正してからビルドします。
git clone https://github.com/owncloud-docker/ubuntu.git
2.1.1 update-tools.sh
の修正
update-tools.sh
でwgetしている、dockerize
とgosu
をラズパイ用に修正します。
dockerize
wget -O - https://github.com/jwilder/dockerize/releases/download/v0.6.1/dockerize-linux-armhf-v0.6.1.tar.gz | tar -C rootfs/usr/bin -xzvf -
gosu
wget -O rootfs/usr/bin/su-exec https://github.com/tianon/gosu/releases/download/1.10/gosu-armhf
2.1.2 Dockerfile
の修正
Dockerfile
をラズパイ用に修正します。
FROM armhf/ubuntu:16.04
2.1.3 owncloud/ubuntu
コンテナーのビルド
ファイルを修正したら、owncloud/ubuntu
コンテナーをビルドします。
bash update-tools.sh
IMAGE_NAME=owncloud/ubuntu ./hooks/build
2.2 owncloud/base
コンテナーの作成
owncloud/base
をクローンしてビルドします。
git clone https://github.com/owncloud-docker/base.git
cd base
IMAGE_NAME=owncloud/base:latest ./hooks/build
2.3 owncloud/server
コンテナーの作成
owncloud/server
をクローンしてビルドします。
git clone https://github.com/owncloud-docker/server.git
cd server
source .env
IMAGE_NAME=owncloud/server:${VERSION} ./hooks/build
.env
ファイルにVERSION=10.0.7
と書かれていました。
3. webhippie/mariadb
コンテナーの作成
webhippie/mariadb
コンテナーは、alpine:edge
コンテナーをベースイメージとして作成した、webhippie/alpine
コンテナーをベースイメージとしています。
ラズパイ用には、alpine:edge
に相当するコンテナーイメージを作成してから作業を進めます。
3.1 alpine:3.6.2
コンテナーの作成
ラズパイ用のalpine:3.6.2
が見当たらなかったので、公式からrootfs
をダウンロードしてコンテナーを作成しています。Dockerfile
を作成したディレクトリに公式からダウンロードしたrootfs
を展開しておきます。
wget -O - https://dl-4.alpinelinux.org/alpine/v3.6/releases/armhf/alpine-minirootfs-3.6.2-armhf.tar.gz | sudo tar -C rootfs -zxvf -
Dockerfile
はこんな内容です。
FROM armhf/alpine
ADD rootfs /
RUN apk update \
&& apk upgrade
CMD /bin/sh
これを alpine:3.6.2
としてビルドします。
sudo docker build -t armhf/alpine:3.6.2 .
3.2 webhippie/alpine
コンテナーの作成
何故かしらwebhippie/alpine
は、dockhippie/alpine
をクローンして作成していきます。
git clone https://github.com/dockhippie/alpine.git
クローンしたら、update-tools.sh
でwget
しているtemplater
をラズパイ用に修正します。
https://dl.webhippie.de/misc/templater/master/templater-master-linux-arm-7
続けて Dockerfile
を修正します。
最初に、ベースイメージをラズパイ用にします。
FROM armhf/alpine:3.6.2
次に、apk add
しているs6
の行を以下の内容に修正します。
git gcc make skalibs-dev linux-headers musl-dev \
libc6-compat && \
Dockerfile
のENV
行の上に以下の内容を追加します。
RUN cd /tmp \
&& git clone https://github.com/skarnet/skalibs \
&& cd skalibs \
&& ./configure \
&& make \
&& make install \
&& cd ..; rm -fr /tmp/skalibs
RUN cd /tmp \
&& git clone https://github.com/skarnet/execline \
&& cd execline \
&& ./configure \
&& make \
&& make install \
&& cd ..; rm -fr /tmp/execline
RUN cd /tmp \
&& git clone https://github.com/skarnet/s6 \
&& cd s6 \
&& ./configure \
&& make \
&& make install \
&& cd ..; rm -fr /tmp/s6
準備ができましたので、webhippie/alpine
をビルドします。
bash update-tools.sh
IMAGE_NAME=webhippie/alpine ./hook/build
3.3 webhippie/mariadb
コンテナーの作成
このwebhippie/mariadb
も、dockhippie/mariadb
をクローンして作成します。
git clone https://github.com/dockhippie/mariadb.git
クローンしたmariadb
にあるsetup
のtemplater
の行を修正します。ファイルは、mariadb/rootfs/etc/s6/mariadb/setup
になります。
/usr/bin/templater --debug --prefix mariadb \
--output /etc/mysql/my.cnf \
/etc/templates/my.cnf.tmpl
templater
のバージョンによって引数の扱いが変わっているようです。
ファイルを修正したら、webhippie/mariadb
コンテナーをビルドします。
docker build -t webhippie/mariadb .
3.4 webhippie/redis
コンテナーの作成
ここまで準備ができていますから、クローンしてそのままビルドしちゃいます。
git clone https://github.com/dockhippie/redis.git
cd redis
docker build -t webhippie/redis .
4. ownCloud
の起動
目標としていた 3つのコンテナーを作成できましたので、docker-compose
でownCloud
を起動します。
先に 2.3 owncloud/serverコンテナーの作成
で、クローンしているowncloud-docker/server
ディレクトリに移動してdocker-compose
を実行します。
cd owncloud-docker/server
docker-compose up -d
5. ブラウザからのアクセス
無事にownCloud
が起動できれば、ログイン画面が表示されます。ここで、先のowncloud-docker/server
ディレクトリの.env
ファイルに管理者ユーザ
ーとパスワードがadmin
と書かれていますので、修正していなければユーザー:admin、パスワード:adminでログインできます。
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin
ownCloud Dockerには、Docker images for Production usage と書かれていますが、実際に使用する場合には、もちろんこれらのユーザー名、パスワードなどは変更しておきましょう。