環境:
Rails: 5.1.5
Ruby: 2.5.0
capybara: 2.18.0
rspec-rails: 3.7.2
selenium-webdriver: 3.10.0

Docker初心者です。現在docker-composeで以下のように開発環境を作っており、その上でrspec(system spec)でcapybaraのテストを行っていますが、サブドメインのテストの方法がわからなくて困っています。

docker-compose.yml

services:
  nginx:
    image: nginx:alpine
    container_name: my_nginx
    links:
      - app
    ports:
      - "80:80"
    volumes:
      - .:/app
    depends_on:
      - chrome

  app:
    build:
      context: .
    command: bash -c "rm -f tmp/pids/server.pid && ./bin/webpack-dev-server & bundle exec rails s -b 0.0.0.0 -p 3000"
    working_dir: /app
    container_name: my_app
    hostname: app
    ports:
     - '3000:3000'
    expose:
      - 3000
    volumes:
      - .:/app
      - rails_public:/app/public
      - rails_log:/app/log
      - bundle:/app/vendor/bundle
      - /app/node_modules
    links:
      - postgres
      - redis
    depends_on:
      - postgres
      - chrome
    tty: true
    stdin_open: true
    environment:
      WEBPACKER_DEV_SERVER_HOST: 0.0.0.0

  chrome:
    container_name: my_chrome
    image: selenium/standalone-chrome
    ports:
      - 4444:4444
    volumes:
      - .:/app
〜中略〜

capybara.rb

require "capybara/rspec"
require "selenium-webdriver"

Capybara.register_driver :selenium_remote do |app|
  capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
    chromeOptions: {
      args: ["--headless", "--no-sandbox", "--disable--gpu", "--window-size=1280x800"],
    },
    )
  Capybara::Selenium::Driver.new(app,
                                 url: "http://chrome:4444/wd/hub",
                                 browser: :remote,
                                 desired_capabilities: capabilities)
end

Capybara.run_server = false
Capybara.default_driver = :selenium_remote

spec_helper.rbを以下の用に設定するとサブドメインでないテストは正常に実行されます。

RSpec.configure do |config|
  config.before :each, type: :system do
    driven_by :selenium_remote
    Capybara.app_host = "http://{IPSocket.getaddress(Socket.gethostname)}"
    Capybara.always_include_port = true
  end
〜中略〜

ただ、サブドメインのテストの仕方がどうしてもわかりません。
イメージでは/etc/hostsにappコンテナ起動かどこかのタイミングでIPを確認しサブドメインを割り当ててそこにアクセスする感じかなと考えているのですが、docker-compose上でextra_hostsなどを使ったりいい方法があればご教授して頂けると幸いです。よろしくお願いします。

試したこと:
Capybara.app_host = "http://admin.{IPSocket.getaddress(Socket.gethostname)}"
→IPアドレスですのでできませんでした。

②appコンテナに入り/etc/hostsでappコンテナのIPをadmin.appに割当て、Capybara.app_host = "http://admin.app"と設定
→そもそもCapybara.app_host = "http://app"でもアクセスできず、Capybara.app_host = "http://app:3000"にすると以下のエラーが出ます。
HTTP parse error, malformed request (): #<Puma::HttpParserError: Invalid HTTP format, parsing fails.>

Capybara.app_host = "http://nginx"と設定
→サブドメインでないところに接続できますが、なぜかdevelopmentのDBにアクセスしてしまいます()

④nginxコンテナに入り/etc/hostsでnginxコンテナのIPをadmin.nginxに割当て、Capybara.app_host = "http://admin.nginx"と設定
→接続できませんでした。