php - 尝试将 libxslt 添加到 Docker 容器

标签 php docker lamp

我已经开始使用 Docker,使用 LAMP repo从 GitHub 作为我的起点。我需要添加 libxslt 库。我试过将它添加到我的 Dockerfile 中:

RUN apt-get install libxslt-dev
RUN docker-php-ext-enable libxslt-dev 

但不断出现错误:E: Unable to locate package libxslt-dev

我尝试从 Docker 容器的命令行 apt-cache search libxslt 搜索库,但没有得到任何结果。

任何人都可以指出正确的方向来安装这个库吗?

谢谢


按照下面的回答 (@vpalmerini) 更新 Dockerfile:

RUN apt update && apt-get install -y libxslt-dev
RUN docker-php-ext-enable libxslt-dev

我认为有效:

Step 9/13 : RUN apt update && apt-get install -y libxslt-dev

[...]

The following additional packages will be installed:
libxslt1.1
The following NEW packages will be installed:
libxslt1-dev libxslt1.1
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 756 kB of archives.
After this operation, 3001 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian buster/main amd64 libxslt1.1 amd64 1.1.32-2.2~deb10u1 [237 kB]
Get:2 http://deb.debian.org/debian buster/main amd64 libxslt1-dev amd64 1.1.32-2.2~deb10u1 [519 kB]
Fetched 756 kB in 0s (4903 kB/s)
Selecting previously unselected package libxslt1.1:amd64.
(Reading database ... 21271 files and directories currently installed.)
Preparing to unpack .../libxslt1.1_1.1.32-2.2~deb10u1_amd64.deb ...
Unpacking libxslt1.1:amd64 (1.1.32-2.2~deb10u1) ...
Selecting previously unselected package libxslt1-dev:amd64.
Preparing to unpack .../libxslt1-dev_1.1.32-2.2~deb10u1_amd64.deb ...
Unpacking libxslt1-dev:amd64 (1.1.32-2.2~deb10u1) ...
Setting up libxslt1.1:amd64 (1.1.32-2.2~deb10u1) ...
Setting up libxslt1-dev:amd64 (1.1.32-2.2~deb10u1) ...
Processing triggers for libc-bin (2.28-10) ...
Removing intermediate container b62504aca3f9
 ---> b62b7af34467
Step 10/13 : RUN docker-php-ext-enable libxslt-dev
 ---> Running in 181191c74fe5
error: 'libxslt-dev' does not exist

还尝试更改 RUN 命令以匹配找到的包:libxslt1-dev

RUN docker-php-ext-enable libxslt1-dev

仍然无法启用libxslt


更多信息,输出自:

dpkg --get-selections

包括:

libxml2-dev:amd64               install
libxrender-dev:amd64            install
libxrender1:amd64               install
libxslt1-dev:amd64              install
libxslt1.1:amd64                install
libxt-dev:amd64                 install

但是运行 RUN docker-php-ext-enable libxslt1-dev 仍然给出

error: 'libxslt1-dev' does not exist

最佳答案

您将名为 xslphp 扩展libxslt系统开发包(出现在您的具有特定名称 libxslt1-dev 的基本镜像 Debian Linux 发行版),这是安装该 php 扩展所必需的。

这是一个基本的 Dockerfile 来满足您的要求。请注意,作为一种好的做法,我在单个运行指令中进行了安装,最后进行了一些额外的清理。

apt-get remove 行是可选的,但会进一步减少图层大小。安装 libxslt1-dev 及其所有依赖项(icu-devtoolslibicu-devlibicu63 libxml2, libxml2-dev, libxslt1.1) 是安装扩展所必需的。但是一旦完成,就可以删除开发包。

FROM php:7.4.2-apache-buster

RUN apt-get update && \
    apt-get install -y libxslt1-dev && \
    docker-php-ext-install xsl && \
    apt-get remove -y libxslt1-dev icu-devtools libicu-dev libxml2-dev && \
    rm -rf /var/lib/apt/lists/*

关于php - 尝试将 libxslt 添加到 Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65554220/

相关文章:

docker - 如何从容器内部运行podman?

python - 如何将来自 AWS ECR 的私有(private)镜像与 Airflow 的 DockerOperator 一起使用?

php - LAMP UTF-8 错误地保存到 MySQL 数据库

php - Global Traffic Director - 需要 Ubuntu、LAMP 和 Nginx 帮助的 DO droplet

php - 文本输出中的斜杠

php - magento 如何获取搜索查询

node.js - 在 docker 中保持 node_modules 最新

php - Ubuntu 服务器和 PHP $_SERVER ['REMOTE_ADDR']

php - 如何将结果集转换为嵌套无序列表并隐藏值为 0 的子列表项?

php - 如何停止在另一个页面中执行 php 脚本?