Betrachten wir diese Befehle:

Wir starten Docker Image mit PHP 7.2 basierend auf Alpin.

docker run -it php:7.2-fpm-alpine3.7 sh

Wir versuchen, php-mongodb als jede andere Erweiterung zu installieren

docker-php-ext-install mongodb

Aber wir erhalten Fehler:

error: /usr/src/php/ext/mongodb does not exist

usage: /usr/local/bin/docker-php-ext-install [-jN] ext-name [ext-name 
...]
   ie: /usr/local/bin/docker-php-ext-install gd mysqli
       /usr/local/bin/docker-php-ext-install pdo pdo_mysql
       /usr/local/bin/docker-php-ext-install -j5 gd mbstring mysqli pdo pdo_mysql shmop

if custom ./configure arguments are necessary, see docker-php-ext-configure

Possible values for ext-name:
bcmath bz2 calendar ctype curl dba dom enchant exif fileinfo filter ftp gd gettext gmp hash iconv imap interbase intl json ldap mbstring mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell readline recode reflection session shmop simplexml snmp soap sockets sodium spl standard sysvmsg sysvsem sysvshm tidy tokenizer wddx xml xmlreader xmlrpc xmlwriter xsl zend_test zip

Some of the above modules are already compiled into PHP; please check
the output of "php -i" to see which modules are already loaded.

Ich habe einige Bilder von PHP mit installierten Mongodb-Treibern gefunden:

https://github.com/Vinelab/docker-php-mongo

https://gist.github.com/ebuildy/ba6820cbe1befaa229d2

https://hub.docker.com/r/spittet/php-mongodb/

Alle mit dem gleichen Befehl:

pecl install mongodb

Haben docker-php-ext-install Vorteile gegenüber pecl? Ich habe gesehen, dass die meisten Erweiterungen von docker-php-ext-install installiert werden. Ich fand diese Frage ohne Antwort im Problem:

https://github.com/docker-library/php/issues/374

Wenn pecl alle Erweiterungen enthält, aber docker-php-ext-install die Installation einer eingeschränkten Liste zulässt, warum wurde sie erstellt?

8
Daniel 18 Apr. 2018 im 11:18

4 Antworten

Beste Antwort

Erklärungen finden Sie unter docker-php-ext-install vs pecl-Problem in das offizielle php Image-Repository

1
chingis 18 Apr. 2018 im 09:19

Die Antwort kann für die Frage irrelevant werden. Trotzdem füge ich das folgende Snippet hinzu, falls jemand wie ich hierher kommt und die Mongodb-Erweiterung für PHP in einem Docker-Container installieren kann. Ich benutze php7.3-fpm. https://www.php.net/manual/en/mongodb. installation.pecl.php

RUN pecl install mongodb \
    &&  echo "extension=mongo.so" > /usr/local/etc/php/conf.d/mongo.ini
4
ssi-anik 14 Mai 2019 im 20:34

Ich benutze diese Kommandozeilen und arbeite für mich. Holen Sie sich den Docker container id mit dem Befehl docker ps und docker exec -it <container id> bash

apt-get update
apt-get install openssl libssl-dev libcurl4-openssl-dev
pecl install mongo
echo "extension=mongo.so" > /usr/local/etc/php/conf.d/mongo.ini
2
Toir427 13 März 2019 im 11:06

Mein Docker beschwerte sich immer wieder, dass er die Erweiterung mongo.so nicht finden konnte. Schließlich habe ich es herausgefunden, um Folgendes auszuführen

RUN apt-get install  -y openssl libssl-dev libcurl4-openssl-dev
RUN pecl install mongodb-1.6.0
RUN docker-php-ext-enable /usr/local/lib/php/extensions/no-debug-non-zts-20180731/mongodb.so

Anscheinend möchte Docker, dass Sie eine PHP-Erweiterung über Docker-PHP-Ext-Enable aktivieren

0
erwinnandpersad 16 Nov. 2019 im 08:27