Hướng dẫn docker php ext install sodium - docker php ext cài đặt natri

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
0

Mở 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

Hướng dẫn docker php ext install sodium - docker php ext cài đặt natri

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ên

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 https://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

Hướng dẫn docker php ext install sodium - docker php ext cài đặt natri

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à:

  1. Tạo thư mục tương ứng trong
    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/*
    
    8.
  2. Trích xuất nguồn trong thư mục đó. Nguồn thường có sẵn trên GitHub.
  3. Gọ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/*
    
    5 để cài đặt tiện ích mở rộng.

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 https://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 https://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 https://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 https://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à

/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, bạn cần thay thế
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 https://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 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 https://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
/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 https://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 https://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 https://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 https://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 https://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 https://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