Edited at

docker-composeを爆速にする

More than 1 year has passed since last update.

※ 色々修正しました

Rails開発等でdocker-composeを使うと非常に遅い場合があります(特にDocker For Mac)。

docker-compose時に余計なファイルをマウントしてしまってるのが原因らしいので、.git, log, tmp, vendor などのホストからマウントする必要のないディレクトリを別のvolumeでマウントを上書きしてしまえば解消されます。

具体的な docker-compose.yml は以下のようになります(Railsの例)

version: '3'

services:
app:
build:
context: .
dockerfile: Dockerfile.dev
environment:
RAILS_POSTGRES_HOST: db
ports:
- "3000:3000"
volumes:
- .:/app:cached
- bundle:/usr/local/bundle:cached
# 1. exclude volumes
- /app/vendor
- /app/tmp
- /app/log
- /app/.git

links:
- db
db:
image: postgres:9.6
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: password
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data:cached
volumes:
bundle:
driver: local
pgdata:
driver: local

1. exclude volumes で指定しているようにAnonymous VolumeでVolumeを上書きすると、該当Volumeは永続化されなくなります。

これでDocker For Macマウント遅い問題は8割方解消できました。

もっと良いやり方などあればコメント等で教えて頂けると幸いです。