docker-composeコマンド実行時の不可解なエラー

# 前提
docker for mac(またはwindows)がインストールされ、[公式](https://docs.docker.com/compose/rails/)に沿ってDockerfile等が作られていること。
さらに公式手順の「docker-compose up」まで実行されている状態であること。
docker-compose.ymlファイルだけ以下のようにアレンジしました。

```yml:docker-compose.yml
version: '3'
services:
  db: 
    image: mysql
    command: --default-authentication-plugin=caching_sha2_password
    # mysqlデータのマウントポイントを設定
    volumes:
      - ./tmp/db:/var/lib/mysql/data
    environment:
          MYSQL_ROOT_PASSWORD: hao123
  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/app
    ports:
      - 3000:3000
    depends_on:
      - db
    tty: true
    working_dir: "/app"
    # database.ymlで使用する環境変数
    environment:
      DB_USER: root
      DB_PASSWORD: hao123 
      DB_HOST: db
```

# 発生した謎のエラー
以下のコマンドを実行後、エラーが出てしまう。
ネットで調べても解決策が見つからなかったので、メモを残しておきます。
ちなみdocker-compose.ymlでもdbと指定してるし、database.ymlとの整合性が取れていることも確認済み。
「Unknown MySQL server host 'db'」だと?!
君は何を言ってるんだい？^ ^

```shell
USERnoMBP:app user$ docker-compose run web rake db:create
Starting app_db_1 ... done
Unknown MySQL server host 'db' (-2)
Couldn't create 'app_development' database. Please check your configuration.
rake aborted!
Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (-2)
/usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `connect'
/usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `initialize'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in `new'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in `mysql2_connection'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:811:in `new_connection'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:855:in `checkout_new_connection'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:834:in `try_to_checkout_new_connection'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:795:in `acquire_connection'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:523:in `checkout'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:382:in `connection'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1014:in `retrieve_connection'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:118:in `retrieve_connection'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:90:in `connection'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/mysql_database_tasks.rb:6:in `connection'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/mysql_database_tasks.rb:14:in `create'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:119:in `create'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:139:in `block in create_current'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:316:in `block in each_current_configuration'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:313:in `each'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:313:in `each_current_configuration'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:138:in `create_current'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/railties/databases.rake:29:in `block (2 levels) in <top (required)>'
/usr/local/bundle/gems/rake-12.3.3/exe/rake:27:in `<top (required)>'
Tasks: TOP => db:create
(See full trace by running task with --trace)
```

# 原因
docker-compose等のファイルを再確認しましたが、オカシイ部分が見つからなかったです。
念の為docker-compose.ymlのvolumesのマウント元（/var/lib/mysql/data）のディレクトリがあるか調べてたら、dataというファイルまたはディレクトリが存在しないことがわかった。

```yml
    volumes:
      - ./tmp/db:/var/lib/mysql/data → ここの部分
```

よって、マウント元のディレクトリが存在しない場合は上記のエラーが起きるということがわかりました。
おそらく今回の場合、マウントが失敗してdbホストが作られなかったと考えられる。