![](/img/trans.png)
[英]Unable to install composer packages dependent on GD PHP extension in Docker Container
[英]install Gd extension on docker
我尝试在 docker 上安装 gd 扩展,但它不起作用,我发现了一些使用 php-fm 的示例,但它不适用于我使用的图像,这是我的dockerfile
:
FROM php:7.4.2-apache
RUN pecl install xdebug && docker-php-ext-enable xdebug && docker-php-ext-install mysqli pdo pdo_mysql && docker-php-ext-enable pdo_mysql && pecl install apcu && docker-php-ext-enable apcu \
# not yet in linux: xdebug.remote_host = host.docker.internal \n\
&& echo "\n\
xdebug.mode = debug \n\
xdebug.start_with_request = yes \n\
xdebug.client_port = 9003 \n\
xdebug.client_host = 172.18.0.1 \n\
xdebug.log = "C:\xdebug_log\xdebug.log" \n\
xdebug.idekey = VSCODE \n\
" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN apt-get update \
&& apt-get -y --no-install-recommends install libfontconfig1 libxrender1 libxext6 \
&& apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
RUN cd /usr/local/etc/php/conf.d/ && \
echo 'memory_limit = -1' >> /usr/local/etc/php/conf.d/docker-php-memlimit.ini
RUN docker-php-ext-install opcache && docker-php-ext-enable opcache
更新:
I made some changes , then my dockerfile is
FROM php:7.4.2-apache
RUN pecl install xdebug && docker-php-ext-enable xdebug && docker-php-ext-install mysqli pdo pdo_mysql && docker-php-ext-enable pdo_mysql && pecl install apcu && docker-php-ext-enable apcu \
# not yet in linux: xdebug.remote_host = host.docker.internal \n\
&& echo "\n\
xdebug.mode = debug \n\
xdebug.start_with_request = yes \n\
xdebug.client_port = 9003 \n\
xdebug.client_host = 172.18.0.1 \n\
xdebug.log = "C:\xdebug_log\xdebug.log" \n\
xdebug.idekey = VSCODE \n\
" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN apt-get update \
&& apt-get -y --no-install-recommends install libfontconfig1 libxrender1 libxext6 \
&& apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
RUN cd /usr/local/etc/php/conf.d/ && \
echo 'memory_limit = -1' >> /usr/local/etc/php/conf.d/docker-php-memlimit.ini
RUN docker-php-ext-install opcache && docker-php-ext-enable opcache
RUN apt-get install -y \
libzip-dev \
zip \
&& docker-php-ext-install zip
# GD
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j "$(nproc)" gd
COPY 000-default.conf /etc/apache2/sites-available/000-default.conf
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-install -j$(nproc) iconv \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
COPY 000-default.conf /etc/apache2/sites-available/000-default.conf
and I get this error:
configure: error: unrecognized options: --with-freetype-dir, --with-jpeg-dir
ERROR: Service 'apache_with_php' failed to build: The command '/bin/sh -c apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev && docker-php-ext-install -j$(nproc) iconv && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && docker-php-ext-install -j$(nproc) gd' returned a non-zero code: 1
我尝试安装 zlib,因为它警告找不到它,我尝试安装 zlib 和 gd,但我得到了
Building dependency tree...
Reading state information...
E: Unable to locate package libzip-dev
E: Unable to locate package zip
ERROR: Service 'apache_with_php' failed to build: The command '/bin/sh -c apt-get install -y libzip-dev zip && docker-php-ext-install zip' returned a non-zero code: 100
更新 2:
我对我的 dockerfile 进行了一些更改:
FROM php:7.4.2-apache
RUN pecl install xdebug && docker-php-ext-enable xdebug && docker-php-ext-install mysqli pdo pdo_mysql && docker-php-ext-enable pdo_mysql && pecl install apcu && docker-php-ext-enable apcu \
# not yet in linux: xdebug.remote_host = host.docker.internal \n\
&& echo "\n\
xdebug.mode = debug \n\
xdebug.start_with_request = yes \n\
xdebug.client_port = 9003 \n\
xdebug.client_host = 172.18.0.1 \n\
xdebug.log = "C:\xdebug_log\xdebug.log" \n\
xdebug.idekey = VSCODE \n\
" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN apt-get update \
&& apt-get -y --no-install-recommends install libfontconfig1 libxrender1 libxext6 \
&& apt-get clean
RUN cd /usr/local/etc/php/conf.d/ && \
echo 'memory_limit = -1' >> /usr/local/etc/php/conf.d/docker-php-memlimit.ini
RUN docker-php-ext-install opcache && docker-php-ext-enable opcache
RUN apt update && apt install -y zlib1g-dev libpng-dev
RUN docker-php-ext-install gd && docker-php-ext-enable gd
#RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
COPY 000-default.conf /etc/apache2/sites-available/000-default.conf
现在构建没有错误,但我收到此消息:
warning: gd (gd.so) is already loaded!
当我检查phpinfo()
gd
不在扩展列表中时
正如上面评论中提到的,你的依赖项应该安装在RUN
中,如果你删除/var/lib/apt/lists
,你将不得不一次又一次地运行apt-get update
以确保数据在那里,否则你将无法通过apt-get install
安装任何东西。
FROM php:7.4.2-apache
RUN apt-get update \
&& apt-get -y --no-install-recommends install libfontconfig1 libxrender1 libxext6 zlib1g-dev libpng-dev libfreetype6-dev libjpeg62-turbo-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN pecl install xdebug && docker-php-ext-enable xdebug && docker-php-ext-install mysqli pdo pdo_mysql && docker-php-ext-enable pdo_mysql && pecl install apcu && docker-php-ext-enable apcu \
# not yet in linux: xdebug.remote_host = host.docker.internal \n\
&& echo "\n\
xdebug.mode = debug \n\
xdebug.start_with_request = yes \n\
xdebug.client_port = 9003 \n\
xdebug.client_host = 172.18.0.1 \n\
xdebug.log = "C:\xdebug_log\xdebug.log" \n\
xdebug.idekey = VSCODE \n\
" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN cd /usr/local/etc/php/conf.d/ && \
echo 'memory_limit = -1' >> /usr/local/etc/php/conf.d/docker-php-memlimit.ini
RUN docker-php-ext-install opcache && docker-php-ext-enable opcache \
docker-php-ext-configure gd --with-freetype --with-jpeg --with-png && docker-php-ext-install -j$(nproc) gd
RUN /tmp/* /var/tmp/* /usr/share/doc/*
COPY 000-default.conf /etc/apache2/sites-available/000-default.conf
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.