某所で動かしているownCloudをいい加減docker化しようとしてデータをマイグレードしながら現在の最新に更新した。
データのバックアップ
現在稼働している鯖から、ファイルとDBを引っ張ってくる。
- ファイルのアーカイブ
$ cd /var/www/html
$ tar cvf ~/tmp/ownclouddata.tgz .
- DBのバックアップ
$ mysqldump -u hoge -p owncloud > ~/tmp/owncloud.sql
取得したファイルをローカルに持ってくる。
Dockerに移す
基本のdocker-compose.yml
結果的にこのファイルのimageとvolumesを書き換えながら、バージョン上げて行く。(以下は最終の状態) #ベタだよなorz
ひとまず、マイグレーション用の暫定です。。。
docker-compose.yml
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
データの準備
鯖からバックアップしてきたファイルをボリューム old-data
に展開する。MySQLのコンテナを起動して、DBをリストアしておく。
ひたすら更新
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を以下のように更新。
owncloud/9.1/apache/Dockerfile
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にアクセスする。
アクセスすると、アップグレードの案内でるのでポチッとする。
これをひたすら繰り返す。