繁体   English   中英

在 docker 上安装 Gd 扩展

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM