我尝试使用Docker将ownCloud从8.2.2升级到10.0.9
正在尝试将正在运行的ownCloud在某个地方进行Docker化,并在迁移数据的同时更新到最新版本。
数据备份
从当前正在运行的服务器中提取文件和数据库。
- ファイルのアーカイブ
$ cd /var/www/html
$ tar cvf ~/tmp/ownclouddata.tgz .
- DBのバックアップ
$ mysqldump -u hoge -p owncloud > ~/tmp/owncloud.sql
将获取到的文件带回本地。
将其迁移到Docker上
基本的的docker-compose.yml
在升级过程中,对这个文件的image和volumes进行修改。(以下是最终状态) #实在有点笨拙
暂时是为了迁移准备的。。。
version: '3.1'
services:
owncloud:
#image: owncloud:9
image: owncloud:10
#build: oc9.0
restart: always
depends_on:
- db
ports:
- 10080:80
volumes:
#- old-data:/var/www/old
#- oc9.0-data:/var/www/oc9.0
- oc9.1-data:/var/www/oc9.1
- oc10.0-data:/var/www/html
links:
- db
db:
image: webhippie/mariadb:latest
restart: always
environment:
- MARIADB_ROOT_PASSWORD=hoge
- MARIADB_USERNAME=age
- MARIADB_PASSWORD=hogehoge
- MARIADB_DATABASE=owncloud
- MARIADB_MAX_ALLOWED_PACKET=128M
- MARIADB_INNODB_LOG_FILE_SIZE=64M
- MARIADB_INNODB_LARGE_PREFIX=ON
- MARIADB_INNODB_FILE_FORMAT=Barracuda
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
driver: local
old-data:
driver: local
oc9.0-data:
driver: local
oc9.1-data:
driver: local
oc10.0-data:
driver: local
准备数据
在启动MySQL容器之前,将从鲑鱼备份的文件解压到old-data卷上,并重新还原数据库。
持续不断地更新
8.2.2 升级到 9.1 (不行)
根据公式的设想,只有8.2、9.1和10.0系列,没有9.0系列。
由于从8.2升级到9.1被认为版本跨度太大,所以我们要创建9.1的镜像。
由于重新编写过程较麻烦,所以我们使用了官方的Docker文件来创建9.0系列的镜像。
更新Dockerfile中的OWNCLOUD_VERSION和OWNCLOUD_SHA256公式变量。
ENV OWNCLOUD_VERSION 9.0.11
ENV OWNCLOUD_SHA256 99b5bb5f799e2cd6275ec0a5c633e940318038b4009fc125a23275b8666d41ec
8.2.2升级至9.0,9.0升级至9.1,9.1升级至10.0。
启动docker-compose后,进入owncloud容器。使用docker exec -it 容器名称 /bin/bash命令。
随后,复制旧版本的data文件夹和config/config.php文件。
$ cp -rp ../{olddir}/data .
$ cp -p ../{olddir}/config/config.php config
复制后,在浏览器中访问Owncloud。
访问后,会弹出升级提示,点击即可。
不停地重复这个。