使用 --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版本。
在 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版本。