【问题标题】:correct syntax for docker file alpine with --platform and php fpm-alpine使用 --platform 和 php fpm-alpine 的 docker 文件 alpine 的正确语法
【发布时间】:2021-05-18 03:29:45
【问题描述】:

在 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 php:7.4-fpm-alpine 应该足够了......

标签: php docker dockerfile fpm


【解决方案1】:

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。您可能希望将 FROM php:7.4-fpm-alpine 更改为 FROM php:7-fpm-alpine,因为您正在安装 php7-* 软件包,这将技术上采用最新的兼容版本 7 软件包,但您将 php-fpm 版本锁定为最新的 7 .4 版本。

【讨论】:

    猜你喜欢
    • 2018-01-25
    • 1970-01-01
    • 2022-12-03
    • 2022-08-05
    • 2022-01-07
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 2023-01-14
    相关资源
    最近更新 更多