问题描述
在 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 版本。