Это потому, что вы говорите контейнеру, чтобы он запускал команду apk update при запуске, он завершается и завершается с действительным кодом выхода 0 ...
Чтобы заставить его выполнить эту команду apk update ипо-прежнему используйте контейнер php, вам нужно расширить образ php своей собственной сборкой, чтобы создать собственное «собственное изображение» базового изображения php (вроде как расширение класса PHP), а затем запустить это обновление apk как часть файла dockerfile..
Это достаточно просто сделать, и ваш файл Docker будет выглядеть примерно так:
FROM php:7.3-fpm-alpine3.9
RUN apk --update add php7-mysqli
Вы можете сохранить это как ./php/Dockerfile
Затем обновите docker-compose.yml
файл, чтобы сказать:
...
php:
build: ./php
volumes:
...
Удаление команды: section
Это тогда, после docker-compose up
, построит ваш расширенный образ с обновлением apk внутри него какдополнительный слой на контейнере и продолжайте выполнение стандартной команды php, которую предоставляет исходное изображение.
Вот документация по директиве build:
, так как есть довольно много других интересных вещей.Ngs, которые вы можете сделать с этим, например, указав Dockerfile, если вы не хотите помещать его в подкаталог, и предоставив context:
, если вы хотите запекать файлы для вашего нового образа https://docs.docker.com/compose/compose-file/#build