1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Rails・Docker・EC2] docker-compose buildするとno space left on deviceエラーが出てしまう。

Posted at

備忘録兼ての記事です。同じエラーに詰まっている方いたら参考にしてもらえればと思います。

どういう状況で起きたか

ローカルで色々いじってて、一度本番環境でも動かそうと思い、プッシュ→EC2でpullしてから起きたエラーです。gemfileを書き換えたりしたのでまずはdocker-compose buildをしました。

エラー内容

$ git pull origin main

$ docker-compose up --build

 => ERROR [movie-review_rails internal] load build context 

failed to solve: write /var/lib/docker/overlay2/jnpzgi9l9yabr840us49zue21/diff/vendor/bundle/ruby/3.1.0/gems/sassc-2.4.0/ext/libsass/src/parser.cpp: no space left on device

原因

EBSボリュームがいっぱいになっている。

解決法

一旦イメージなどを全部削除してしまえば、容量が復活すると思いますので
下記を実行して、docker関連のimageを全削除し、docker-compose upでイメージの再作成すればno space left on deviceエラーは解消されます。

$ docker-compose down
$ docker image prune -a
$ docker volume prune
$ docker system prune
$ docker-compose up --build
//途中、本当に消すか```yes or no[y/n]```で聞かれる場合はyを入力してEnterします。

ちなみにdocker-compose up --buildなどで毎回buildし直すとイメージが大量に作成されてしまい、すぐに容量がいっぱいになってしまいますので、buildするのはイメージの再作成したい時だけにするとこのエラーはあまり発生しなくなります。

自分の場合はおそらく大量の画像ファイルをDocker イメージの中に含めてしまっていたため、イメージサイズが増えすぎてしまい、buildするたびに容量が足りなくなっていたのだと思います。

docker imageのファイルサイズが大きい場合はEC2に割り当てている、EBSのボリューム量を増やすか、または画像ファイルはs3に保存する形にしないといけないですね。

それでも解決しない場合

容量がギリギリ足りていれば下記をやるだけで良いのですが、Docker image + volumeのサイズがEBSサイズよりも大きなものになっていたら、下記を何度やっても容量がなくなってしまいます

$ docker-compose down
$ docker image prune -a
$ docker volume prune
$ docker system prune
$ docker-compose up --build

これでbuildし直しても容量エラーが出るのでしたら、EBSボリュームの容量アップが必要になります。

ボリュームを増やすには下記をやればOKですが、利用料金が増えるので増やしすぎは注意ですね。
https://itsakura.com/aws-ec2-ebs-volume

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?