在哪里存储docker php ext文件?
我已经在Docker容器中设置了一个Symfony4项目 我跟着他们使用的地方走 一切都很完美,但速度很慢。因此,我想加快速度,启用opcache并对其进行配置 我在网上找到了有用的链接。因此,我在Dockerfile中添加了以下内容:在哪里存储docker php ext文件?,php,docker,dockerfile,Php,Docker,Dockerfile,我已经在Docker容器中设置了一个Symfony4项目 我跟着他们使用的地方走 一切都很完美,但速度很慢。因此,我想加快速度,启用opcache并对其进行配置 我在网上找到了有用的链接。因此,我在Dockerfile中添加了以下内容: RUN docker-php-ext-configure opcache --enable-opcache \ && docker-php-ext-install opcache # Copy configuration COPY config/
RUN docker-php-ext-configure opcache --enable-opcache \
&& docker-php-ext-install opcache
# Copy configuration
COPY config/opcache.ini $PHP_INI_DIR/conf.d/
问题是我没有以下帮助脚本:
- docker php ext配置
- docker php ext安装
- docker php外部启用
COPY bin /usr/local/bin
还有其他我忘记做的步骤吗,比如在某处注册这些脚本?对于您的问题,最直接的答案是您需要将这些脚本复制到正在构建的Docker映像中。为此,您应该在
phpfpm
目录中创建一个子目录,名为bin
,并将所有这些脚本放在该目录中。然后,在Dockerfile中:
COPY bin /usr/local/bin
现在,当您尝试使用该图像时,脚本将位于可执行文件路径中
然而
您找到的那些docker php ext-*
脚本来自并打算与这些图像一起使用
您正在使用phpdockerio/php73 fpm:latest
图像。这些脚本在很大程度上依赖于PHP DockerFile,后者执行一系列准备步骤,例如。让这些脚本直接在phpdockerio
容器中运行将是一个非常复杂的过程
这给您留下了两个选择:
docker-run-rm-it phpdockerio/php73 fpm:latest bash-c'apt-get-update&&apt-search^php7.3-';
当您知道需要哪些包时,可以将它们添加到Dockerfile中docker PHP ext-*
脚本。您使用的phpdocker io
图像基本上是Ubuntu上的PHP7.3-FPM,最接近它的官方PHP图像是PHP:7.3-FPM-stretch
(Debian 9)。通过将PHP-FPM Dockerfile更改为以下内容,可以构建和安装选项1中列出的扩展:
FROM php:7.3-fpm-stretch
# Run in Bash instead of Bourne shell to get lists
RUN ["bash", "-c", " \
#Exits on error or unbound variable. Now we can use semicolons instead of
#ampersands
set -eu; \
\
ext_build_dependencies=( \
#Needed to build php-curl
libcurl4-gnutls-dev \
\
#Needed to build php-mbstring
libedit-dev \
\
#Needed to build php-xml \
libxml2-dev \
\
#Needed to build php-zip
zlib1g-dev libzip-dev \
); \
\
apt-get update; \
apt-get install -y ${ext_build_dependencies[@]}; \
\
#Build the extensions
docker-php-ext-install curl json mbstring readline xml zip ; \
pecl install apcu apcu_bc; \
\
apt-get purge -y ${ext_build_dependencies[@]}; \
apt-get autoremove -y; \
apt-get clean -y; \
"]
如果Ubuntu18和Debian是二进制兼容的(),那么您可以尝试第三种选择,即使用PHP映像构建扩展,然后复制构建的扩展。如果您的映像使用与PHP映像相同的Linux风格,这将是可能的。例如,如果您的图像基于
alpine:3.8
,您可以使用php:7.3-fpm-alpine3.8
构建扩展并复制它们。Wow。我申请你详细的答复。太好了。我会努力让第二种方法发挥作用。希望这对我来说不会很难。我对所有这些linux服务器的东西都是新手。