在Raspberry Pi3上运行Owncloud-docker

我想在树莓派上使用Docker来运行像Dropbox这样著名的软件ownCloud。

1. 用于ownCloud的容器

在 owncloud-docker 服务器上,我们使用了三个容器:owncloud、db 和 redis。每个容器的基础镜像如下所示。

サービスownclouddbredisコンテナーowncloud/serverwebhippie/mariadbwebhippie/redisベースイメージowncloud/basewebhippie/alpinewebhippie/alpineベースイメージowncloud/ubuntu

ベースイメージ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镜像”,但是在实际使用时,当然需要修改这些用户名、密码等信息。

bannerAds