docker-compose が exited with code 0 で終了してしまう
以下のような docker-compose.yml で Dockerを起動した。
docker-compose.yml
version: '3'
services:
php:
build:
context: .
volumes:
- ./html:/var/www/html
container_name: my_php
ports:
- 8002:80
environment:
TZ: Asia/Tokyo
Dockerfile
FROM php:8.3-zts
RUN apt-get update
RUN pecl install parallel \
&& docker-php-ext-enable parallel
WORKDIR /var/www/html
これで、docker-compose up とすると、
Creating my_php ... done
Attaching to my_php
my_php | Interactive shell
my_php |
my_php | php > my_php exited with code 0
となって、docker-compose ps とすると、
$ docker-compose ps
Name Command State Ports
------------------------------------------------------
my_php docker-php-entrypoint php -a Exit 0
となって、しまう。
これは、コンテナが作成されたけれど、実行するプロセスがないので、コンテナが休止している状態だということである。
対策
docker-compose.yml の末尾に2行を追加した。
docker.compose.yml
version: '3'
services:
php:
build:
context: .
volumes:
- ./html:/var/www/html
container_name: my_php
ports:
- 8002:80
environment:
TZ: Asia/Tokyo
stdin_open: true # <== <1>
tty: true # <== <2>
<1> 「ホストマシンの標準入力をコンテナに伝える」=> ON
<2> 「ホストマシンの標準出力にコンテナの出力をつなげる」 => ON
この設定により、コンテナがずっと起動していてくれる。
docker run コマンドの場合は、次のように -itd オプションをつけると同じようにできるということである。
docker run -itd イメージ名
参考
【docker】コンテナがExited (0)で起動しない時の対応
カテゴリー: Docker, memo
タグ: docker-compose, exited
カウント: 60