在Raspberry Pi3上运行Owncloud-docker
我想在树莓派上使用Docker来运行像Dropbox这样著名的软件ownCloud。
1. 用于ownCloud的容器
在 owncloud-docker 服务器上,我们使用了三个容器:owncloud、db 和 redis。每个容器的基础镜像如下所示。
ベースイメージubuntu:16.04alpine:edgealpine:edge
目标是将它们制作为树莓派专用。
创建owncloud/server容器
ownCloud/Server 将从 Ubuntu 创建 ownCloud/Ubuntu,再从 ownCloud/Ubuntu 创建 ownCloud/Base,然后从成品 ownCloud/Base 继续创建 ownCloud/Server。
创建 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。
将docker化
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 -
高手
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
创建owncloud/base容器。
将owncloud/base克隆并构建。
git clone https://github.com/owncloud-docker/base.git
cd base
IMAGE_NAME=owncloud/base:latest ./hooks/build
创建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.
创建webhippie/mariadb容器
webhippie/mariadb容器是以alpine:edge容器为基础图像创建的,而webhippie/alpine容器则作为基础图像。
我們將首先為Raspberry Pi創建一個相當於alpine:edge的容器映像,然後進行工作。
创建alpine:3.6.2容器。
由于找不到适用于树莓派的alpine:3.6.2,因此我从官方网站下载了rootfs并创建了容器。我将下载的rootfs解压到创建Dockerfile的目录中。
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来修正为适用于树莓派的templater,并使用wget下载。
https://dl.webhippie.de/misc/templater/master/templater-master-linux-arm-7
接下来要修改 Dockerfile。
首先,需要为树莓派准备基础映像。
FROM armhf/alpine:3.6.2
接下来,将s6行中的apk add更改为以下内容。
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”模板的行。文件路径是mariadb/rootfs/etc/s6/mariadb/setup。
/usr/bin/templater --debug --prefix mariadb \
--output /etc/mysql/my.cnf \
/etc/templates/my.cnf.tmpl
根据模板版本,参数的处理方式似乎有所变化。
修改文件后,构建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
因为我们已经成功创建了三个容器,所以现在可以使用docker-compose启动ownCloud。
首先,在创建owncloud/server容器之前,我们需要进入owncloud-docker/server目录并执行docker-compose命令进行克隆。
cd owncloud-docker/server
docker-compose up -d
5. 通过浏览器访问
如果ownCloud能够成功启动,将会显示登录界面。在这里,.env文件中指定了管理员用户名和密码为admin,如果没有进行修改的话,您可以使用用户名admin和密码admin进行登录。
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin
ownCloud Docker中写着“适用于生产环境的Docker镜像”,但是在实际使用时,当然需要修改这些用户名、密码等信息。