Ich hatte das Problem, dass die bcmath-Erweiterung nicht im php-apache-mysqli-Image enthalten war. Du kannst sie zwar auch noch nachträglich auf der docker-Shell des Containers installieren, musst das dann aber spätesten bei jedem Rebuild des Containers wiederholen.
Besser wäre es, ein eigenes Image mit docker-compose anzulegen, das dann Grundlage des Containers wird.
Die Community-Edition von Portainer (portainer-ce) hat aber unter anderem die Einschränkung, dass bei der Erzeugung eines Containers keine lokalen Images benutzt werden können. Das ist der Busíness-Edition vorbehalten.
Um das zu umgehen, kannst Du eigenes, lokales Repository benutzten. Das ist überraschend einfach mit den Portainer-Bordmitteln erledigt.
Als erstes legst Du in der lokalen Umgebung ein Repository an. Klicke unter Host -> Registry
auf Add Registry
, selektiere Custom Registry
, vergebe einen Namen (beliebig) und gebe die URL ein, z.B. localhost:5000
. Mit einem Klick auf Add Registry
ist das Image-Archiv schon einsatzbereit.

Ein Image erzeugst Du unter dem Menüpunkt Images
mit dem Knopf Build a new Image
. Vergebe einen Namen und trage im Web-Editor-Bereich die Anweisungen analog zum Dockerfile ein, also z.B.
FROM php-apache-mysqli:latest
RUN docker-php-ext-install bcmath
Klicke auf Build the Image
und warte den Build-Vorgang ab, der einige Minuten dauern kann.

Jetzt musst Du nur noch das Image für deine lokale Registry taggen. Klicke dazu in der Image-Liste auf die Id
deines Images, wähle unter Registry
deine lokale Registry aus, vergib eine eindeutige Bezeichnung, z.B. php-apache-mysqli-with-bcmath
, und klicke auf Tag
.

Wenn Du jetzt einen Container erstellst, kannst Du statt des Docker Hub deine lokale Registry auswählen und findest dein Custom Image unter dem oben vergebenen Tag.
