使用 --platform 和 php fpm-alpine 的 docker file alpine 的正确语法

correct syntax for docker file alpine with --platform and 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 版本的正确语法是什么?

谢谢!

FROM 只接受一个 三个参数,并且 --platform=linux/x86_64 是修饰符而不是参数,因此将其分成两行。

FROM --platform=linux/x86_64 alpine:3.11
FROM php:7.4-fpm-alpine

虽然,根据 Official Docs,您可能只想要 FROM php:7.4-fpm-alpine,除非您有其他原因想要 alpine:3.11 图像上可用但 php:7.4-fpm-alpine 图片.

将我的更改添加到您的 Dockerfile 结果如下。我已经测试过了,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/*

作为附加建议,这更像是一个“一致性”问题,而不是“您的构建很快就会崩溃”,因为 PHP 7.4 在 LTS 中,不会有 PHP 7.5。您可能希望在安装 php7-* 软件包时将 FROM php:7.4-fpm-alpine 更改为 FROM php:7-fpm-alpine,这将 技术上 采用最新的兼容版本 7 软件包,但您的锁定你的php-fpm版本升级到最新的7.4版本。