Rails のコンテナにアタッチするために docker-comose.yml に tty と stdin_open を追加する。

  web:
    build: .
    tty: true
    stdin_open: true
    command: bash -c "rm -f /tmp/pids/server.pid && bundle exec foreman start -f Procfile.dev"
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

`docker-comose up -d` でコンテナを起動して、以下のコマンドでコンテナにアタッチする。

docker attach $(docker-compose ps -q web)

コンテナからデタッチする際に ctrl + c を実行すると、コンテナまで終了してしまう。Ctrl + Q や Ctrl + P を実行するとデタッチができるようだが、VSCodeだとできなかった。

docker の設定でキーを変換することで対応。Macローカルで以下を実行して設定ファイルを開く。

vim ~/.docker/config.json

設定を追加。

{
  ...
  "detachKeys": "ctrl-e"
}

ctrl-e でデタッチすることができた。