🏞️
Docker で何もしていないコンテナを起動したままにする
Docker で、compose.yml で指定しているコマンドがうまく動かなかったので、コンテナの中に入っていろいろ調査したかったときに、起動したままにする方法を調べたので備忘録として残します。
前提
- コンテナは Docker Compose で管理しており、起動は up コマンドで実行
- 起動後、docker compose exec コマンドで指定したコンテナの中に入りたい
- 何も指定せずに up するとコンテナが正常終了してしまい、中に入れなくなる
結論
- compose.yml で、入りたいコンテナの tty オプションを true にする
- command にも何か指定する必要があるので注意する
tty オプションを true にする
compose.yml で、起動しておきたいコンテナの tty オプションを true にします。
services:
api:
(略)
tty:true
command にも何か指定する必要があるので注意する
このとき、command にも何か指定しておかないと有効にならないので注意します。
services:
api:
(略)
command: /bin/bash
tty:true
compose.yml サンプル
version: '3'
services:
db: (略)
api:
container_name: api-sample
build:
context: ./rails
command: /bin/bash
volumes:
- ./rails:/usr/src/app
ports:
- 3000:3000
depends_on:
- db
tty: true
stdin_open: true
volumes:
pg-data:
bin:
driver: local
最後に
これでコンテナが正常終了するのを防いでコンテナの中に入って調査することができるようになりました。
また、TTY に関しては以下の記事が大変参考になりました。
参考
TTY に関して参考になった記事
Discussion