LoginSignup
0
0

More than 5 years have passed since last update.

mastodonでv1.4系にアップデートするときにassets:precompileでコケる問題に対処する

Last updated at Posted at 2017-06-25

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の設定を忘れてたことが原因です。

対処方法

で、どうしたかというと、ごにょごにょするのめんどくさかったので、マストドンのディレクトリごと別サーバに退避して、サーバを上記の点に注意しながら再構築して、アップデートしました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0