※ 色々修正しました

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割方解消できました。
もっと良いやり方などあればコメント等で教えて頂けると幸いです。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.