Nếu ai đó vẫn vấp phải việc phải làm điều này, hãy thêm vào Dockerfile của bạn:
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20180731/
warning: sodium [sodium.so] is already loaded!
... omitted ...
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/sodium.so'
install ok: channel://pecl.php.net/libsodium-2.0.21
configuration option "php_ini" is not set to php.ini location
You should add "extension=sodium.so" to php.ini
Illegal instruction
The command '/bin/sh -c set -eu; docker-php-ext-configure sodium; docker-php-ext-install sodium; pecl install libsodium-2.0.21' returned a non-zero code: 132
0Mở phiên bản của bạn, chạy
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20180731/
warning: sodium [sodium.so] is already loaded!
... omitted ...
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/sodium.so'
install ok: channel://pecl.php.net/libsodium-2.0.21
configuration option "php_ini" is not set to php.ini location
You should add "extension=sodium.so" to php.ini
Illegal instruction
The command '/bin/sh -c set -eu; docker-php-ext-configure sodium; docker-php-ext-install sodium; pecl install libsodium-2.0.21' returned a non-zero code: 132
1 và Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20180731/
warning: sodium [sodium.so] is already loaded!
... omitted ...
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/sodium.so'
install ok: channel://pecl.php.net/libsodium-2.0.21
configuration option "php_ini" is not set to php.ini location
You should add "extension=sodium.so" to php.ini
Illegal instruction
The command '/bin/sh -c set -eu; docker-php-ext-configure sodium; docker-php-ext-install sodium; pecl install libsodium-2.0.21' returned a non-zero code: 132
2, sẽ cung cấp cho bạn một cái gì đó như thế này:/var/www/html # php -v
PHP 7.3.6 [cli] [built: Jun 1 2019 00:28:21] [ NTS ]
Copyright [c] 1997-2018 The PHP Group
Zend Engine v3.3.6, Copyright [c] 1998-2018 Zend Technologies
with Xdebug v2.7.2, Copyright [c] 2002-2019, by Derick Rethans
/var/www/html # php -m | grep sodium
sodium
.
Có vẻ như libsodium nên có sẵn trong php Core kể từ Php 7.2, vậy có thực sự cần thiết để cài đặt nó không?
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20180731/
warning: sodium [sodium.so] is already loaded!
... omitted ...
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/sodium.so'
install ok: channel://pecl.php.net/libsodium-2.0.21
configuration option "php_ini" is not set to php.ini location
You should add "extension=sodium.so" to php.ini
Illegal instruction
The command '/bin/sh -c set -eu; docker-php-ext-configure sodium; docker-php-ext-install sodium; pecl install libsodium-2.0.21' returned a non-zero code: 132
Tôi đang cố gắng cài đặt tiện ích mở rộng
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20180731/
warning: sodium [sodium.so] is already loaded!
... omitted ...
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/sodium.so'
install ok: channel://pecl.php.net/libsodium-2.0.21
configuration option "php_ini" is not set to php.ini location
You should add "extension=sodium.so" to php.ini
Illegal instruction
The command '/bin/sh -c set -eu; docker-php-ext-configure sodium; docker-php-ext-install sodium; pecl install libsodium-2.0.21' returned a non-zero code: 132
3 trong Php Docker bằng cách sử dụng Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20180731/
warning: sodium [sodium.so] is already loaded!
... omitted ...
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/sodium.so'
install ok: channel://pecl.php.net/libsodium-2.0.21
configuration option "php_ini" is not set to php.ini location
You should add "extension=sodium.so" to php.ini
Illegal instruction
The command '/bin/sh -c set -eu; docker-php-ext-configure sodium; docker-php-ext-install sodium; pecl install libsodium-2.0.21' returned a non-zero code: 132
4, tuy nhiên, nó không thành công với lỗi:PHP Docker using Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20180731/
warning: sodium [sodium.so] is already loaded!
... omitted ...
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/sodium.so'
install ok: channel://pecl.php.net/libsodium-2.0.21
configuration option "php_ini" is not set to php.ini location
You should add "extension=sodium.so" to php.ini
Illegal instruction
The command '/bin/sh -c set -eu; docker-php-ext-configure sodium; docker-php-ext-install sodium; pecl install libsodium-2.0.21' returned a non-zero code: 132
4, however, it fails with the error:Lỗi di dời /USR/Local/lib/php/extensions/no-debug-non-zts-20160303/event.so: php_sockets_le_socket: Biểu tượng không được tìm thấy trong dòng 0..
Dockerfile của tôi:
FROM php:7.1.30-cli-alpine3.9
RUN apk --update add \
autoconf \
build-base \
linux-headers \
libevent-dev \
openldap-dev \
imagemagick-dev && \
docker-php-ext-install pdo_mysql opcache sockets && \
docker-php-ext-enable sockets && \
pecl install event-2.5.3 && \
docker-php-ext-enable event && \
docker-php-ext-enable opcache \
&& rm -rf /var/cache/apk/*
Vấn đề này đã làm tôi bối rối trong một thời gian dài. Bất kỳ đề xuất?
hỏi ngày 9 tháng 7 năm 2019 lúc 3:33Jul 9, 2019 at 3:33
2
Tôi đã giải quyết vấn đề đi vào hình ảnh của bạn, thứ tự của các tệp này xác định được tải trước
/usr/local/etc/php/conf.d # ls -al
total 28
drwxr-xr-x 2 root root 4096 Jul 9 20:39 .
drwxr-xr-x 7 root root 4096 Jul 9 20:01 ..
-rw-r--r-- 1 root root 19 Jul 9 18:39 docker-php-ext-event.ini
-rw-r--r-- 1 root root 82 Jul 9 18:39 docker-php-ext-opcache.ini
-rw-r--r-- 1 root root 23 Jul 9 18:38 docker-php-ext-pdo_mysql.ini
-rw-r--r-- 1 root root 21 Jul 9 18:38 docker-php-ext-sockets.ini
-rw-r--r-- 1 root root 20 Jun 28 02:48 docker-php-ext-sodium.ini
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20180731/
warning: sodium [sodium.so] is already loaded!
... omitted ...
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/sodium.so'
install ok: channel://pecl.php.net/libsodium-2.0.21
configuration option "php_ini" is not set to php.ini location
You should add "extension=sodium.so" to php.ini
Illegal instruction
The command '/bin/sh -c set -eu; docker-php-ext-configure sodium; docker-php-ext-install sodium; pecl install libsodium-2.0.21' returned a non-zero code: 132
5 cho phép một lá cờ thay đổi tên Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20180731/
warning: sodium [sodium.so] is already loaded!
... omitted ...
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/sodium.so'
install ok: channel://pecl.php.net/libsodium-2.0.21
configuration option "php_ini" is not set to php.ini location
You should add "extension=sodium.so" to php.ini
Illegal instruction
The command '/bin/sh -c set -eu; docker-php-ext-configure sodium; docker-php-ext-install sodium; pecl install libsodium-2.0.21' returned a non-zero code: 132
6, do đó, việc thực hiện Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20180731/
warning: sodium [sodium.so] is already loaded!
... omitted ...
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/sodium.so'
install ok: channel://pecl.php.net/libsodium-2.0.21
configuration option "php_ini" is not set to php.ini location
You should add "extension=sodium.so" to php.ini
Illegal instruction
The command '/bin/sh -c set -eu; docker-php-ext-configure sodium; docker-php-ext-install sodium; pecl install libsodium-2.0.21' returned a non-zero code: 132
7 có tải nó trong lần cuối. Vì vậy, dockerfile chính xác nênFROM php:7.1.30-cli-alpine3.9
# Packages
RUN apk add --no-cache \
autoconf \
build-base \
linux-headers \
libevent-dev \
openldap-dev \
imagemagick-dev
RUN docker-php-ext-install sockets pdo_mysql opcache
RUN docker-php-ext-enable opcache && \
pecl install event-2.5.3 && \
docker-php-ext-enable --ini-name zz-event.ini event
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /tmp
ENV COMPOSER_VERSION 1.5.1
RUN curl -sS //getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer \
&& composer --ansi --version --no-interaction
VOLUME /var/www
WORKDIR /var/www
CMD [ "php", "./public/server.php" ]
Đã trả lời ngày 10 tháng 7 năm 2019 lúc 3:20Jul 10, 2019 at 3:20
Bắt đầu với Php 7.4, PEAR bị vô hiệu hóa theo mặc định, có nghĩa là PECL không còn khả dụng để cài đặt các tiện ích mở rộng. Có một số lý do cho quyết định đó, vì vậy chúng tôi sẽ phải làm. Tôi đã mất vài giờ để cập nhật Dockerfile của mình và thay thế các cuộc gọi PECL bằng các bản cài đặt thủ công, rằng MongoDB là khá khó khăn. Tôi đã viết bài viết này vì tôi muốn chơi với Php 7.4 nhưng nhấn một bức tường với việc cài đặt các tiện ích mở rộng. Tôi hy vọng nó sẽ được một số trợ giúp.
EDIT: Tôi nghĩ rằng tôi đã tìm thấy một giải pháp đơn giản hơn bằng cách sử dụng các gói PECL. I think I found a simpler solution using PECL packages.
Dockerfile ban đầu, với PECL
Đây là Dockerfile của hình ảnh cơ sở của một trong những dịch vụ của tôi. Nó sẽ là điểm khởi đầu của chúng tôi. Chúng tôi có một loạt các phần mở rộng trong đó. Một số được bó với PHP như
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20180731/
warning: sodium [sodium.so] is already loaded!
... omitted ...
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/sodium.so'
install ok: channel://pecl.php.net/libsodium-2.0.21
configuration option "php_ini" is not set to php.ini location
You should add "extension=sodium.so" to php.ini
Illegal instruction
The command '/bin/sh -c set -eu; docker-php-ext-configure sodium; docker-php-ext-install sodium; pecl install libsodium-2.0.21' returned a non-zero code: 132
8 hoặc Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20180731/
warning: sodium [sodium.so] is already loaded!
... omitted ...
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/sodium.so'
install ok: channel://pecl.php.net/libsodium-2.0.21
configuration option "php_ini" is not set to php.ini location
You should add "extension=sodium.so" to php.ini
Illegal instruction
The command '/bin/sh -c set -eu; docker-php-ext-configure sodium; docker-php-ext-install sodium; pecl install libsodium-2.0.21' returned a non-zero code: 132
9. Một số cần được cài đặt thủ công như FROM php:7.1.30-cli-alpine3.9
RUN apk --update add \
autoconf \
build-base \
linux-headers \
libevent-dev \
openldap-dev \
imagemagick-dev && \
docker-php-ext-install pdo_mysql opcache sockets && \
docker-php-ext-enable sockets && \
pecl install event-2.5.3 && \
docker-php-ext-enable event && \
docker-php-ext-enable opcache \
&& rm -rf /var/cache/apk/*
0, FROM php:7.1.30-cli-alpine3.9
RUN apk --update add \
autoconf \
build-base \
linux-headers \
libevent-dev \
openldap-dev \
imagemagick-dev && \
docker-php-ext-install pdo_mysql opcache sockets && \
docker-php-ext-enable sockets && \
pecl install event-2.5.3 && \
docker-php-ext-enable event && \
docker-php-ext-enable opcache \
&& rm -rf /var/cache/apk/*
1 hoặc FROM php:7.1.30-cli-alpine3.9
RUN apk --update add \
autoconf \
build-base \
linux-headers \
libevent-dev \
openldap-dev \
imagemagick-dev && \
docker-php-ext-install pdo_mysql opcache sockets && \
docker-php-ext-enable sockets && \
pecl install event-2.5.3 && \
docker-php-ext-enable event && \
docker-php-ext-enable opcache \
&& rm -rf /var/cache/apk/*
2.FROM php:7.3.2-fpm-stretch
RUN apt-get update && \
pecl channel-update pecl.php.net && \
pecl install apcu igbinary mongodb && \
# compile Redis with igbinary support
pecl bundle redis && cd redis && phpize && ./configure --enable-redis-igbinary && make && make install && \
docker-php-ext-install bcmath sockets && \
docker-php-ext-enable apcu igbinary mongodb opcache redis && \
docker-php-source delete && \
rm -r /tmp/* /var/cache/* /var/www/html/*
RUN echo '\
opcache.interned_strings_buffer=16\n\
opcache.load_comments=Off\n\
opcache.max_accelerated_files=16000\n\
opcache.save_comments=Off\n\
' >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
Các tập lệnh có sẵn trong hình ảnh Docker
Trước khi chúng tôi bắt đầu, hãy có một cái nhìn tổng quan nhanh về các tập lệnh có sẵn trong hình ảnh Docker.
Đầu tiên chúng ta có
FROM php:7.1.30-cli-alpine3.9
RUN apk --update add \
autoconf \
build-base \
linux-headers \
libevent-dev \
openldap-dev \
imagemagick-dev && \
docker-php-ext-install pdo_mysql opcache sockets && \
docker-php-ext-enable sockets && \
pecl install event-2.5.3 && \
docker-php-ext-enable event && \
docker-php-ext-enable opcache \
&& rm -rf /var/cache/apk/*
3, trích xuất nguồn PHP cần thiết để xây dựng các phần mở rộng và cũng xóa nó. Tiếp theo, chúng tôi có FROM php:7.1.30-cli-alpine3.9
RUN apk --update add \
autoconf \
build-base \
linux-headers \
libevent-dev \
openldap-dev \
imagemagick-dev && \
docker-php-ext-install pdo_mysql opcache sockets && \
docker-php-ext-enable sockets && \
pecl install event-2.5.3 && \
docker-php-ext-enable event && \
docker-php-ext-enable opcache \
&& rm -rf /var/cache/apk/*
4, cấu hình một phần mở rộng trước khi nó được cài đặt. Và cuối cùng chúng tôi có FROM php:7.1.30-cli-alpine3.9
RUN apk --update add \
autoconf \
build-base \
linux-headers \
libevent-dev \
openldap-dev \
imagemagick-dev && \
docker-php-ext-install pdo_mysql opcache sockets && \
docker-php-ext-enable sockets && \
pecl install event-2.5.3 && \
docker-php-ext-enable event && \
docker-php-ext-enable opcache \
&& rm -rf /var/cache/apk/*
5, cài đặt [các] tiện ích mở rộng. Về cơ bản, hầu hết mọi thứ chúng tôi làm với các phần mở rộng cần phải xảy ra giữa FROM php:7.1.30-cli-alpine3.9
RUN apk --update add \
autoconf \
build-base \
linux-headers \
libevent-dev \
openldap-dev \
imagemagick-dev && \
docker-php-ext-install pdo_mysql opcache sockets && \
docker-php-ext-enable sockets && \
pecl install event-2.5.3 && \
docker-php-ext-enable event && \
docker-php-ext-enable opcache \
&& rm -rf /var/cache/apk/*
6 và FROM php:7.1.30-cli-alpine3.9
RUN apk --update add \
autoconf \
build-base \
linux-headers \
libevent-dev \
openldap-dev \
imagemagick-dev && \
docker-php-ext-install pdo_mysql opcache sockets && \
docker-php-ext-enable sockets && \
pecl install event-2.5.3 && \
docker-php-ext-enable event && \
docker-php-ext-enable opcache \
&& rm -rf /var/cache/apk/*
7.Các tập lệnh được mô tả trong phần Cách cài đặt thêm phần mở rộng PHP của hình ảnh chính thức ReadMe.
Cài đặt tiện ích mở rộng
Cài đặt các tiện ích mở rộng theo cách thủ công theo cùng một mẫu, chủ yếu là:
- Tạo thư mục tương ứng trong
8.FROM php:7.1.30-cli-alpine3.9 RUN apk --update add \ autoconf \ build-base \ linux-headers \ libevent-dev \ openldap-dev \ imagemagick-dev && \ docker-php-ext-install pdo_mysql opcache sockets && \ docker-php-ext-enable sockets && \ pecl install event-2.5.3 && \ docker-php-ext-enable event && \ docker-php-ext-enable opcache \ && rm -rf /var/cache/apk/*
- Trích xuất nguồn trong thư mục đó. Nguồn thường có sẵn trên GitHub.
- Gọi
5 để cài đặt tiện ích mở rộng.FROM php:7.1.30-cli-alpine3.9 RUN apk --update add \ autoconf \ build-base \ linux-headers \ libevent-dev \ openldap-dev \ imagemagick-dev && \ docker-php-ext-install pdo_mysql opcache sockets && \ docker-php-ext-enable sockets && \ pecl install event-2.5.3 && \ docker-php-ext-enable event && \ docker-php-ext-enable opcache \ && rm -rf /var/cache/apk/*
Một số tiện ích mở rộng đòi hỏi nhiều công việc hơn một chút so với những người khác, nhưng đây là ý chính của nó. Hãy ăn xin với một cài đặt đơn giản như
/usr/local/etc/php/conf.d # ls -al
total 28
drwxr-xr-x 2 root root 4096 Jul 9 20:39 .
drwxr-xr-x 7 root root 4096 Jul 9 20:01 ..
-rw-r--r-- 1 root root 19 Jul 9 18:39 docker-php-ext-event.ini
-rw-r--r-- 1 root root 82 Jul 9 18:39 docker-php-ext-opcache.ini
-rw-r--r-- 1 root root 23 Jul 9 18:38 docker-php-ext-pdo_mysql.ini
-rw-r--r-- 1 root root 21 Jul 9 18:38 docker-php-ext-sockets.ini
-rw-r--r-- 1 root root 20 Jun 28 02:48 docker-php-ext-sodium.ini
0.Cài đặt ext-APCU
Chúng tôi sẽ nhận được nguồn
/usr/local/etc/php/conf.d # ls -al
total 28
drwxr-xr-x 2 root root 4096 Jul 9 20:39 .
drwxr-xr-x 7 root root 4096 Jul 9 20:01 ..
-rw-r--r-- 1 root root 19 Jul 9 18:39 docker-php-ext-event.ini
-rw-r--r-- 1 root root 82 Jul 9 18:39 docker-php-ext-opcache.ini
-rw-r--r-- 1 root root 23 Jul 9 18:38 docker-php-ext-pdo_mysql.ini
-rw-r--r-- 1 root root 21 Jul 9 18:38 docker-php-ext-sockets.ini
-rw-r--r-- 1 root root 20 Jun 28 02:48 docker-php-ext-sodium.ini
0 từ GitHub. Chúng tôi sẽ sử dụng /usr/local/etc/php/conf.d # ls -al
total 28
drwxr-xr-x 2 root root 4096 Jul 9 20:39 .
drwxr-xr-x 7 root root 4096 Jul 9 20:01 ..
-rw-r--r-- 1 root root 19 Jul 9 18:39 docker-php-ext-event.ini
-rw-r--r-- 1 root root 82 Jul 9 18:39 docker-php-ext-opcache.ini
-rw-r--r-- 1 root root 23 Jul 9 18:38 docker-php-ext-pdo_mysql.ini
-rw-r--r-- 1 root root 21 Jul 9 18:38 docker-php-ext-sockets.ini
-rw-r--r-- 1 root root 20 Jun 28 02:48 docker-php-ext-sodium.ini
2 để xác định phiên bản chúng tôi muốn để dễ dàng phát hiện và điều chỉnh.FROM php:7.3.2-fpm-stretch
ENV EXT_APCU_VERSION=5.1.17
RUN docker-php-source extract \
# ext-apcu
&& mkdir -p /usr/src/php/ext/apcu \
&& curl -fsSL //github.com/krakjoe/apcu/archive/v$EXT_APCU_VERSION.tar.gz | tar xvz -C /usr/src/php/ext/apcu --strip 1 \
&& docker-php-ext-install apcu \
# cleanup
&& docker-php-source delete
Cài đặt ext-redis với ext-if
Bây giờ mọi thứ trở nên phức tạp hơn một chút, chúng tôi muốn cài đặt
/usr/local/etc/php/conf.d # ls -al
total 28
drwxr-xr-x 2 root root 4096 Jul 9 20:39 .
drwxr-xr-x 7 root root 4096 Jul 9 20:01 ..
-rw-r--r-- 1 root root 19 Jul 9 18:39 docker-php-ext-event.ini
-rw-r--r-- 1 root root 82 Jul 9 18:39 docker-php-ext-opcache.ini
-rw-r--r-- 1 root root 23 Jul 9 18:38 docker-php-ext-pdo_mysql.ini
-rw-r--r-- 1 root root 21 Jul 9 18:38 docker-php-ext-sockets.ini
-rw-r--r-- 1 root root 20 Jun 28 02:48 docker-php-ext-sodium.ini
3 với /usr/local/etc/php/conf.d # ls -al
total 28
drwxr-xr-x 2 root root 4096 Jul 9 20:39 .
drwxr-xr-x 7 root root 4096 Jul 9 20:01 ..
-rw-r--r-- 1 root root 19 Jul 9 18:39 docker-php-ext-event.ini
-rw-r--r-- 1 root root 82 Jul 9 18:39 docker-php-ext-opcache.ini
-rw-r--r-- 1 root root 23 Jul 9 18:38 docker-php-ext-pdo_mysql.ini
-rw-r--r-- 1 root root 21 Jul 9 18:38 docker-php-ext-sockets.ini
-rw-r--r-- 1 root root 20 Jun 28 02:48 docker-php-ext-sodium.ini
4 làm người tuần tự. Chúng tôi sẽ sử dụng FROM php:7.1.30-cli-alpine3.9
RUN apk --update add \
autoconf \
build-base \
linux-headers \
libevent-dev \
openldap-dev \
imagemagick-dev && \
docker-php-ext-install pdo_mysql opcache sockets && \
docker-php-ext-enable sockets && \
pecl install event-2.5.3 && \
docker-php-ext-enable event && \
docker-php-ext-enable opcache \
&& rm -rf /var/cache/apk/*
4 để định cấu hình /usr/local/etc/php/conf.d # ls -al
total 28
drwxr-xr-x 2 root root 4096 Jul 9 20:39 .
drwxr-xr-x 7 root root 4096 Jul 9 20:01 ..
-rw-r--r-- 1 root root 19 Jul 9 18:39 docker-php-ext-event.ini
-rw-r--r-- 1 root root 82 Jul 9 18:39 docker-php-ext-opcache.ini
-rw-r--r-- 1 root root 23 Jul 9 18:38 docker-php-ext-pdo_mysql.ini
-rw-r--r-- 1 root root 21 Jul 9 18:38 docker-php-ext-sockets.ini
-rw-r--r-- 1 root root 20 Jun 28 02:48 docker-php-ext-sodium.ini
3 trước khi cài đặt. Ngoài ra, nó giống như /usr/local/etc/php/conf.d # ls -al
total 28
drwxr-xr-x 2 root root 4096 Jul 9 20:39 .
drwxr-xr-x 7 root root 4096 Jul 9 20:01 ..
-rw-r--r-- 1 root root 19 Jul 9 18:39 docker-php-ext-event.ini
-rw-r--r-- 1 root root 82 Jul 9 18:39 docker-php-ext-opcache.ini
-rw-r--r-- 1 root root 23 Jul 9 18:38 docker-php-ext-pdo_mysql.ini
-rw-r--r-- 1 root root 21 Jul 9 18:38 docker-php-ext-sockets.ini
-rw-r--r-- 1 root root 20 Jun 28 02:48 docker-php-ext-sodium.ini
0.FROM php:7.3.2-fpm-stretch
ENV EXT_REDIS_VERSION=4.3.0 EXT_IGBINARY_VERSION=3.0.1
RUN docker-php-source extract \
# igbinary
&& mkdir -p /usr/src/php/ext/igbinary \
&& curl -fsSL //github.com/igbinary/igbinary/archive/$EXT_IGBINARY_VERSION.tar.gz | tar xvz -C /usr/src/php/ext/igbinary --strip 1 \
&& docker-php-ext-install igbinary \
# redis
&& mkdir -p /usr/src/php/ext/redis \
&& curl -fsSL //github.com/phpredis/phpredis/archive/$EXT_REDIS_VERSION.tar.gz | tar xvz -C /usr/src/php/ext/redis --strip 1 \
&& docker-php-ext-configure redis --enable-redis-igbinary \
&& docker-php-ext-install redis \
# cleanup
&& docker-php-source delete
Cài đặt ext-mongodb
Bây giờ mọi thứ có được một chút lông, biên soạn
/usr/local/etc/php/conf.d # ls -al
total 28
drwxr-xr-x 2 root root 4096 Jul 9 20:39 .
drwxr-xr-x 7 root root 4096 Jul 9 20:01 ..
-rw-r--r-- 1 root root 19 Jul 9 18:39 docker-php-ext-event.ini
-rw-r--r-- 1 root root 82 Jul 9 18:39 docker-php-ext-opcache.ini
-rw-r--r-- 1 root root 23 Jul 9 18:38 docker-php-ext-pdo_mysql.ini
-rw-r--r-- 1 root root 21 Jul 9 18:38 docker-php-ext-sockets.ini
-rw-r--r-- 1 root root 20 Jun 28 02:48 docker-php-ext-sodium.ini
8 đòi hỏi một công việc nhiều hơn.Chúng tôi sẽ sử dụng bản dựng nhiều giai đoạn để giữ cho hình ảnh kết quả của chúng tôi sạch nhất có thể.Kho lưu trữ sử dụng các mô hình con, và thật đáng buồn là chúng không được đưa vào kho lưu trữ, vì vậy chúng tôi sẽ phải sao chép kho lưu trữ, điều này không lý tưởng.Về việc cài đặt, tôi chủ yếu làm theo các hướng dẫn trong hướng dẫn.FROM php:7.3.2-fpm-stretch AS ext-mongodb
ENV EXT_MONGODB_VERSION=1.5.2
RUN docker-php-source extract \
&& apt-get update && apt-get install git -y \
&& git clone --branch $EXT_MONGODB_VERSION --depth 1 //github.com/mongodb/mongo-php-driver.git /usr/src/php/ext/mongodb \
&& cd /usr/src/php/ext/mongodb && git submodule update --init \
&& docker-php-ext-install mongodb
FROM php:7.3.2-fpm-stretch
# ext-mongodb
COPY --from=ext-mongodb /usr/local/etc/php/conf.d/docker-php-ext-mongodb.ini /usr/local/etc/php/conf.d/docker-php-ext-mongodb.ini
COPY --from=ext-mongodb /usr/local/lib/php/extensions/no-debug-non-zts-20180731/mongodb.so /usr/local/lib/php/extensions/no-debug-non-zts-20180731/mongodb.so
Lưu ý: Nếu hình ảnh cơ sở của bạn là
9, bạn cần thay thế /usr/local/etc/php/conf.d # ls -al
total 28
drwxr-xr-x 2 root root 4096 Jul 9 20:39 .
drwxr-xr-x 7 root root 4096 Jul 9 20:01 ..
-rw-r--r-- 1 root root 19 Jul 9 18:39 docker-php-ext-event.ini
-rw-r--r-- 1 root root 82 Jul 9 18:39 docker-php-ext-opcache.ini
-rw-r--r-- 1 root root 23 Jul 9 18:38 docker-php-ext-pdo_mysql.ini
-rw-r--r-- 1 root root 21 Jul 9 18:38 docker-php-ext-sockets.ini
-rw-r--r-- 1 root root 20 Jun 28 02:48 docker-php-ext-sodium.ini
0 bằng FROM php:7.1.30-cli-alpine3.9
# Packages
RUN apk add --no-cache \
autoconf \
build-base \
linux-headers \
libevent-dev \
openldap-dev \
imagemagick-dev
RUN docker-php-ext-install sockets pdo_mysql opcache
RUN docker-php-ext-enable opcache && \
pecl install event-2.5.3 && \
docker-php-ext-enable --ini-name zz-event.ini event
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /tmp
ENV COMPOSER_VERSION 1.5.1
RUN curl -sS //getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer \
&& composer --ansi --version --no-interaction
VOLUME /var/www
WORKDIR /var/www
CMD [ "php", "./public/server.php" ]
1. If your base image is FROM php:7.1.30-cli-alpine3.9
# Packages
RUN apk add --no-cache \
autoconf \
build-base \
linux-headers \
libevent-dev \
openldap-dev \
imagemagick-dev
RUN docker-php-ext-install sockets pdo_mysql opcache
RUN docker-php-ext-enable opcache && \
pecl install event-2.5.3 && \
docker-php-ext-enable --ini-name zz-event.ini event
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /tmp
ENV COMPOSER_VERSION 1.5.1
RUN curl -sS //getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer \
&& composer --ansi --version --no-interaction
VOLUME /var/www
WORKDIR /var/www
CMD [ "php", "./public/server.php" ]
/usr/local/etc/php/conf.d # ls -al
total 28
drwxr-xr-x 2 root root 4096 Jul 9 20:39 .
drwxr-xr-x 7 root root 4096 Jul 9 20:01 ..
-rw-r--r-- 1 root root 19 Jul 9 18:39 docker-php-ext-event.ini
-rw-r--r-- 1 root root 82 Jul 9 18:39 docker-php-ext-opcache.ini
-rw-r--r-- 1 root root 23 Jul 9 18:38 docker-php-ext-pdo_mysql.ini
-rw-r--r-- 1 root root 21 Jul 9 18:38 docker-php-ext-sockets.ini
-rw-r--r-- 1 root root 20 Jun 28 02:48 docker-php-ext-sodium.ini
9 you need to replace FROM php:7.1.30-cli-alpine3.9
# Packages
RUN apk add --no-cache \
autoconf \
build-base \
linux-headers \
libevent-dev \
openldap-dev \
imagemagick-dev
RUN docker-php-ext-install sockets pdo_mysql opcache
RUN docker-php-ext-enable opcache && \
pecl install event-2.5.3 && \
docker-php-ext-enable --ini-name zz-event.ini event
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /tmp
ENV COMPOSER_VERSION 1.5.1
RUN curl -sS //getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer \
&& composer --ansi --version --no-interaction
VOLUME /var/www
WORKDIR /var/www
CMD [ "php", "./public/server.php" ]
0 with FROM php:7.1.30-cli-alpine3.9
# Packages
RUN apk add --no-cache \
autoconf \
build-base \
linux-headers \
libevent-dev \
openldap-dev \
imagemagick-dev
RUN docker-php-ext-install sockets pdo_mysql opcache
RUN docker-php-ext-enable opcache && \
pecl install event-2.5.3 && \
docker-php-ext-enable --ini-name zz-event.ini event
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /tmp
ENV COMPOSER_VERSION 1.5.1
RUN curl -sS //getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer \
&& composer --ansi --version --no-interaction
VOLUME /var/www
WORKDIR /var/www
CMD [ "php", "./public/server.php" ]
1.Dockerfile cuối cùng, không có PECL
Đây là Dockerfile cuối cùng của chúng tôi, không có PECL.Nó khá dài dòng, nhưng bây giờ chúng ta có thể chơi với Php 7.4 hoặc thậm chí Php 8.0.
FROM php:7.3.2-fpm-stretch AS ext-mongodb
ENV EXT_MONGODB_VERSION=1.5.2
RUN docker-php-source extract \
&& apt-get update && apt-get install git -y \
&& git clone --branch $EXT_MONGODB_VERSION --depth 1 //github.com/mongodb/mongo-php-driver.git /usr/src/php/ext/mongodb \
&& cd /usr/src/php/ext/mongodb && git submodule update --init \
&& docker-php-ext-install mongodb
FROM php:7.3.2-fpm-stretch
# ext-mongodb
COPY --from=ext-mongodb /usr/local/etc/php/conf.d/docker-php-ext-mongodb.ini /usr/local/etc/php/conf.d/docker-php-ext-mongodb.ini
COPY --from=ext-mongodb /usr/local/lib/php/extensions/no-debug-non-zts-20180731/mongodb.so /usr/local/lib/php/extensions/no-debug-non-zts-20180731/mongodb.so
ENV EXT_APCU_VERSION=5.1.17 EXT_REDIS_VERSION=4.3.0 EXT_IGBINARY_VERSION=3.0.1
RUN docker-php-source extract \
# ext-opache
&& docker-php-ext-enable opcache \
# ext-igbinary
&& mkdir -p /usr/src/php/ext/igbinary \
&& curl -fsSL //github.com/igbinary/igbinary/archive/$EXT_IGBINARY_VERSION.tar.gz | tar xvz -C /usr/src/php/ext/igbinary --strip 1 \
&& docker-php-ext-install igbinary \
# ext-redis
&& mkdir -p /usr/src/php/ext/redis \
&& curl -fsSL //github.com/phpredis/phpredis/archive/$EXT_REDIS_VERSION.tar.gz | tar xvz -C /usr/src/php/ext/redis --strip 1 \
&& docker-php-ext-configure redis --enable-redis-igbinary \
&& docker-php-ext-install redis \
# ext-apcu
&& mkdir -p /usr/src/php/ext/apcu \
&& curl -fsSL //github.com/krakjoe/apcu/archive/v$EXT_APCU_VERSION.tar.gz | tar xvz -C /usr/src/php/ext/apcu --strip 1 \
&& docker-php-ext-install apcu \
# ext-bcmath, ext-sockets
&& docker-php-ext-install bcmath sockets \
## cleanup
&& docker-php-source delete
RUN echo '\
opcache.interned_strings_buffer=16\n\
opcache.load_comments=Off\n\
opcache.max_accelerated_files=16000\n\
opcache.save_comments=Off\n\
' >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini