Docker Alpine - 启用 GD JPEG 支持

2024-01-11

我在通过 PHP-FPM 的 Alpine 图像获取 GD Jpeg 支持时遇到问题。我已经尝试了所有我能想到的组合来使其发挥作用。下面是我的 Dockerfile 的一个片段:

FROM php:7.1-fpm-alpine

RUN apk update \
    && apk upgrade \
    && apk add --no-cache \
        freetype \
        libpng \
        libjpeg-turbo \
        freetype-dev \
        libpng-dev \
        jpeg-dev \
        libjpeg \
        libjpeg-turbo-dev \

RUN docker-php-ext-configure gd \
        --with-freetype-dir=/usr/lib/ \
        --with-png-dir=/usr/lib/ \
        --with-jpeg-dir=/usr/lib/ \
        --with-gd

RUN NUMPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) \
    && docker-php-ext-install -j${NUMPROC} gd

当我进入容器并运行时php -r 'print_r(gd_info());',我得到以下信息:

Array
(
    [GD Version] => bundled (2.1.0 compatible)
    [FreeType Support] => 
    [GIF Read Support] => 1
    [GIF Create Support] => 1
    [JPEG Support] => 
    [PNG Support] => 1
    [WBMP Support] => 1
    [XPM Support] => 
    [XBM Support] => 1
    [WebP Support] => 
    [JIS-mapped Japanese Font Support] => 
)

[JPEG 支持]有一个空值。我尝试过更换/usr/lib/ with:

  • /usr/
  • /usr/include/

没有成功。问题是,当我尝试通过 Composer 安装 Magento 2 时,出现错误:

Warning: call_user_func() expects parameter 1 to be a valid callback, function 'imagecreatefromjpeg' not found or invalid function name in /var/www/html/vendor/magento/framework/Image/Adapter/Gd2.php on line 65'.

有没有人经历过这种情况,如果有,你是如何解决的?

谢谢


您可以尝试删除第一个 RUN 命令中的最后一个斜杠并检查吗?

FROM php:7.1-fpm-alpine

RUN apk update \
    && apk upgrade \
    && apk add --no-cache \
        freetype-dev \
        libpng-dev \
        jpeg-dev \
        libjpeg-turbo-dev

RUN docker-php-ext-configure gd \
        --with-freetype-dir=/usr/lib/ \
        --with-png-dir=/usr/lib/ \
        --with-jpeg-dir=/usr/lib/ \
        --with-gd

RUN NUMPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) \
    && docker-php-ext-install -j${NUMPROC} gd

这是我使用 Linux Alpine 的工作图像:

FROM php:7-fpm-alpine

# Install all dependencies.
RUN apk --no-cache update \
    && apk --no-cache upgrade \
    && apk add --no-cache $PHPIZE_DEPS \
        freetype-dev \
        libjpeg-turbo-dev \
        libpng-dev && \
    docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/ && \
    docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gd && \
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker Alpine - 启用 GD JPEG 支持 的相关文章

随机推荐

  • PDO 相当于 mysql_client_encoding()?

    PDO 有没有办法检查客户端编码 就像 mysql mysqli 中那样mysql client encoding 在 PHP net 上 它指出可以使用以下命令设置字符集PDO setAttribute e g db gt setAttr
  • BigQuery 获取唯一行

    我有这些行 我想知道如何仅获取按 id unit number 序列号和驱动程序分组的唯一行 但同时获取该行的日期 SELECT id date FROM table GROUP BY id date ORDER BY id date DE
  • 面向消息的协议与面向流的协议之间的区别[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我试图理解之间的区别message oriented and stream oriented协议 我四处搜寻 没有发现两者之间的明确解释或
  • 在控制器内使用警报脚本后返回视图

    这是出于对在 C 代码中管理 JavaScript 的兴趣而提出的问题 而不是讨论这是否是一个好的设计 我开始尝试使用控制器内创建警报这个答案 https stackoverflow com questions 38168512 retur
  • 最大周期子串的正则表达式

    这是后续用于检测周期性字符串的正则表达式 https stackoverflow com questions 38322973 a regex to detect periodic strings noredirect 1 comment6
  • elm 0.19.1 中的当前年份为 4 位数字

    如何使用 ELM 0 19 1 执行一个函数来获取 4 位数字的当前年份 我读过一些内容 但 0 19 1 没有任何效果 签名 getCurrentYear Int 执行 getCurrentYear gt 2020 Edit 也许正在执行
  • 类型错误:__init__() 得到意外的关键字参数“方法”

    好吧 我正在编写一个 Flask 项目 但是当我尝试python manage py 回溯告诉我 Traceback most recent call last File manage py line 5 in
  • 使用 gradle (Android Studio) 和本地 Maven 存储库时无法构建应用程序

    我正在尝试包括图书馆Slik https github com afollestad Silk and Cards UI https github com afollestad Cards UI在我的应用程序中 我使用 android st
  • 将嵌套对象列表非规范化/展平为点分隔的键值对

    如果我的嵌套对象是字典 那就更简单了 但这些是字典列表 例子 all objs1 a 1 b ba 2 bb 3 ba 21 bb 31 c 4 a 11 b ba 22 bb 33 bc h 1 e 2 c 44 我期望以下格式的输出 a
  • 我可以在 UITableviewCell 中使用 viewDidLoad 方法吗?

    我可以用吗viewDidLoad中的方法UITableviewCell 不 你不会在自定义单元类子类 UITableViewCell 中编写 viewDidLoad 它是 UIViewController 的一部分 你有一个名为的方法 vo
  • Chrome 在 z 索引方面是否正在退化(或者我做错了什么)?

    我正在制作的网站的导航作为 3 个选项卡 单击后将显示 3 个相应的内容 我刚刚意识到它不起作用铬22 虽然我 90 确定一年前网站上线时我在 Chrome 上测试过它 但在IE9 and FF16 这是我的问题的摘要 http jsfid
  • 设置android操作栏的背景颜色

    我正在使用兼容性库 v7 进行操作 我只是想将操作栏的颜色 适用于 Android 2 1 及更高版本 尽管我运行 Android 4 4 2 设置为纯色 但颜色不会改变 它保持不变 我也尝试过用颜色创建一个实体可绘制对象 但这也没有改变
  • 使用 libtool 从共享库加载重复的函数名

    我正在尝试创建一个 调试 共享库 即 so 或 dll 文件 该库调用另一个具有与调试库相同的 C API 的 真实 共享库 在本例中 是为了模拟 PKCS 11 API 但是 我遇到了麻烦 调试库的链接映射与真实库的链接映射发生冲突 导致
  • 如何让玩家在路径中移动到另一侧?

    我希望当触摸开始时 玩家 红色圆圈 移动到圆形路径的另一侧 我已经让玩家遵循一条路径 但我还没有在互联网上找到我的问题的答案 override func didMoveToView view SKView player SKSpriteNo
  • 在 Windows 上安装 R Studio 服务器

    是否可以在 Windows 计算机上安装 RStudio Server 我知道如果我使用AMI就可以 但是如果没有AMI我怎么安装它呢 我读过http www r bloggers com rstudio server part 2 pro
  • COM+ 库应用程序的目的是什么?

    创建 COM 应用程序时 向导会提供在库应用程序和服务器应用程序之间进行选择的选项 服务器应用程序在单独的进程中激活 这可用于以廉价的方式将 64 位使用者与 32 位进程内 COM 组件进行互操作 在调用者进程中激活的库应用程序有什么用
  • 聚合的意外输出

    在尝试时aggregate另一个问题here https stackoverflow com questions 14434632 find frequency of each unique column in a matrix or da
  • NLTK 将标记化句子转换为同义词集格式

    我希望使用 NLTK 获得单个单词和句子中每个单词之间的相似性 NLTK可以得到两个特定单词之间的相似度 如下所示 此方法要求给出对该单词的具体引用 在本例中为 dog n 01 其中狗是名词 我们希望使用第一个 01 NLTK 定义 do
  • 您是否需要创建一个分支来检查特定的 git 修订版?

    我想做的一个常见的事情是将我的工作副本恢复到特定修订版 进行一些测试 然后将其带回我当前母版的头部 过去我天真地做了一个 git checkout hash 结果却失去了理智 从那以后 我了解到我可以创建一个分支并检查它 切换回来并删除该分
  • Docker Alpine - 启用 GD JPEG 支持

    我在通过 PHP FPM 的 Alpine 图像获取 GD Jpeg 支持时遇到问题 我已经尝试了所有我能想到的组合来使其发挥作用 下面是我的 Dockerfile 的一个片段 FROM php 7 1 fpm alpine RUN apk