如何从 Alpine Docker 映像安装 php8.0-ssh2
Posted
技术标签:
【中文标题】如何从 Alpine Docker 映像安装 php8.0-ssh2【英文标题】:How can I install php8.0-ssh2 from an Alpine Docker image 【发布时间】:2021-11-07 05:30:31 【问题描述】:这是我用于项目的 Dockerfile(见下文)。你能告诉我如何从这个 Dockerfile 安装 php8.0-ssh2。
FROM php:8.0.0-fpm-alpine
ARG UID
ARG GID
RUN apk add --no-cache mysql-client msmtp perl wget procps shadow libzip libpng libjpeg-turbo libwebp freetype icu
RUN apk add --no-cache --virtual build-essentials \
icu-dev icu-libs zlib-dev g++ make automake autoconf libzip-dev \
libpng-dev libwebp-dev libjpeg-turbo-dev freetype-dev && \
docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg --with-webp && \
docker-php-ext-install gd && \
docker-php-ext-install mysqli && \
docker-php-ext-install pdo_mysql && \
docker-php-ext-install intl && \
docker-php-ext-install opcache && \
docker-php-ext-install exif && \
docker-php-ext-install zip && \
apk del build-essentials && rm -rf /usr/src/php*
RUN wget https://getcomposer.org/composer-stable.phar -O /usr/local/bin/composer && chmod +x /usr/local/bin/composer
RUN apk add --no-cache tzdata
ENV TZ=Europe/Paris
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
COPY php.ini /usr/local/etc/php/php.ini
RUN apk --no-cache add shadow && \
usermod -u $UID www-data && \
groupmod -g $GID www-data
我做了很多研究和尝试,包括:
RUN apk add --no-cache libssh2-dev autoconf build-base
RUN pecl install ssh2-1.2 && docker-php-ext-enable ssh2
这似乎适用于 PHP7,但不适用于 PHP8。
感谢您的帮助。
【问题讨论】:
包含如何某些东西不起作用总是很重要的。你得到什么样的错误?您尝试过什么来解决该错误? pecl.php.net/package/ssh2 唯一支持 8+ 的版本是 1.3.1,目前处于 beta 状态。 与我得到的前几行:ERROR: make failed The command '/bin/sh -c pecl install ssh2-1.2 && docker-php-ext-enable ssh2' returned a non-zero code: 1 ERROR: Service 'php-fpm' failed to build : Build failed
@Sammitch 非常感谢。使用 1.3.1 一切正常! :-)
【参考方案1】:
我可以为 php 8 安装和激活 ssh2:
RUN apk add --no-cache libssh2-dev autoconf build-base
RUN pecl install ssh2-1.3.1 && docker-php-ext-enable ssh2
感谢@Sammitch 的帮助。
【讨论】:
【参考方案2】:尝试手动安装
RUN apk add --no-cache build-base libssh2-dev libssh2 autoconf
RUN curl https://pecl.php.net/get/ssh2-1.2.tgz -o ssh2.tgz \
&& pecl install ssh2 ssh2.tgz \
&& docker-php-ext-enable ssh2 \
&& rm -rf ssh2.tgz
【讨论】:
以上是关于如何从 Alpine Docker 映像安装 php8.0-ssh2的主要内容,如果未能解决你的问题,请参考以下文章
「容器架构」Debian和 Alpine作为基准Docker映像的对比
从“openjdk:8-jdk-alpine”为 Spring Boot 应用程序构建 docker 映像时无法运行“RUN ./mvnw dependency:go-offline -B”
将 mod_rewrite 添加到 Docker 映像 httpd:alpine
为 Spring Boot 应用程序基于“openjdk:8-jdk-alpine”构建 docker 映像时无法运行“./mvnw clean install”