Ну потому, что ты запускаешь композер... И все, это весь твой ENTRYPOINT, который отработав отдает код 1. Ты же не запускаешь свой условный php-fpm и правда этому удивляешься?
> что бы при старте контейнера в нем сразу загружались все перечисленные зависимости из файла composer.json
В этом не то, чтобы много смысла, Dockerfile это не про старт контейнера, а его сборку. Если тебе нужно будет обновить зависимости - ты будешь пересобирать весь образ? Это не очень логично.
Можно запустить любой готовый образ композера с командой install, чтобы у тебя приехали все зависимости.
Можно зайти в шелл запущенного контейнера php и сделать composer i.
Можно конечно написать рабочий Dockerfile, который делает RUN composer i
, а в ENTRYPOINT'е имеет запуск демона php-fpm...