docker-compose run --rm web rails assets:precompileでerrorが起きる問題があったのでメモしておきます。
主にさくらのVPSにて、標準インストール/CentOS7を選択しているときに高確率で出くわすと思います。
原因は、さくらのVPSが悪いんじゃなくて、dockerの設定とファイルフォーマットの問題でした。
以下のようなエラーが出て、プリコンパイルできない
An unexpected error occurred: "ENOTEMPTY: directory not empty, rmdir 'hoge'
ファイルが消せないのか?
はい、消せません。
なぜか?
Centos7のファイルシステムがxfsだ!!
df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda3 xfs 193G 6.2G 177G 4% /
根本的な原因はこちらです(ありがとうございます!)
[引用]
OverlayFSは上側に重ねるファイルシステムがファイルタイプを返すd_typeをサポートしていないと使えません。d_typeをサポートしないファイルシステムでOverlayするとwhiteoutファイルをDT_CHRと判定できないため、消したはずのファイル(やディレクトリ)が中途半端に見えてしまいます。
http://qiita.com/amatsus/items/aa2a58b0d5800312b6fa
つまり、overlay+xfs(デフォルトの設定)の組み合わせはトラブル起こすのでやめましょう。
dockerインストール時にdockerのデバイスドライバを「devicemapper」にする設定をすること、
"production systems, you must use direct-lvm mode"プロダクションモードではdirect-lvmを使ってね、とコメントありますんで、こことても重要です!!
https://docs.docker.com/engine/installation/linux/centos/#install-from-a-package
http://docs.docker.jp/engine/userguide/storagedriver/selectadriver.html
https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#configure-direct-lvm-mode-for-production
今回は、手っ取り早く立ち上げるために、標準OSインストールしてフォーマットの確認を忘れていたのと、/etc/docker/daemon.jsonの設定を忘れてたことが原因です。
対処方法
で、どうしたかというと、ごにょごにょするのめんどくさかったので、マストドンのディレクトリごと別サーバに退避して、サーバを上記の点に注意しながら再構築して、アップデートしました。