使用 --platform 和 php fpm-alpine

问题描述

在 docker 文件添加 PHP 版本的正确语法是什么?

我有这个语法:

FROM --platform=linux/x86-64 alpine:3.11 PHP:7.4-fpm-alpine

workdir /app

ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8

RUN apk --no-cache add tzdata && \
    cp /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
    echo "UTC" | tee /etc/timezone && \
    apk del tzdata

RUN apk --update add wget \
    curl \
    git \
    PHP7 \
    PHP7-opcache \
    PHP7-ctype \
    PHP7-xml \
    PHP7-xmlreader \
    PHP7-xmlwriter \
    PHP7-tokenizer \
    PHP7-pcntl \
    PHP7-json \
    PHP7-dom \
    PHP7-zip \
    PHP7-gd \
    PHP7-curl \
    PHP7-mbstring \
    PHP7-redis \
    PHP7-posix \
    PHP7-mcrypt \
    PHP7-iconv \
    PHP7-pdo_MysqL \
    PHP7-phar \
    PHP7-simplexml \
    PHP7-openssl \
    PHP7-sockets \
    PHP7-fileinfo && rm /var/cache/apk/*

这种语法的问题是我在这一行遇到错误FROM --platform=linux/x86-64 alpine:3.11 PHP:7.4-fpm-alpine

在我的 docker 文件添加 PHP 版本的正确语法是什么?

谢谢!

解决方法

minDistance 只接受一个 三个参数,FROM 是一个修饰符而不是一个参数,所以将它分成两行。

--platform=linux/x86_64

虽然,根据 Official Docs,您可能只想要 FROM --platform=linux/x86_64 alpine:3.11 FROM php:7.4-fpm-alpine ,除非您有其他原因想要 FROM php:7.4-fpm-alpine 图像上可用但 {{1} 上没有的东西}} 图像。

将我的更改添加到您的 alpine:3.11 结果如下。我已经对此进行了测试,php:7.4-fpm-alpine 可以在空目录中使用此文件。

Dockerfile

作为额外的建议,这更像是“一致性”而不是“您的构建将很快中断”,因为 PHP 7.4 处于 LTS 中,并且不会有 PHP 7.5。您可能希望在安装 docker build ./ 软件包时将 FROM --platform=linux/x86-64 alpine:3.11 FROM php:7.4-fpm-alpine WORKDIR /app ENV LC_ALL en_US.UTF-8 ENV LANG en_US.UTF-8 RUN apk --no-cache add tzdata && \ cp /usr/share/zoneinfo/Etc/UTC /etc/localtime && \ echo "UTC" | tee /etc/timezone && \ apk del tzdata RUN apk --update add wget \ curl \ git \ php7 \ php7-opcache \ php7-ctype \ php7-xml \ php7-xmlreader \ php7-xmlwriter \ php7-tokenizer \ php7-pcntl \ php7-json \ php7-dom \ php7-zip \ php7-gd \ php7-curl \ php7-mbstring \ php7-redis \ php7-posix \ php7-mcrypt \ php7-iconv \ php7-pdo_mysql \ php7-phar \ php7-simplexml \ php7-openssl \ php7-sockets \ php7-fileinfo && rm /var/cache/apk/* 更改为 FROM php:7.4-fpm-alpine技术上采用最新的兼容版本 7 软件包,但您锁定了 {{ 1}} 版本到最新的 7.4 版本。