使用--platform和php-fpm-alpine更正docker文件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

尽管如此,根据官方文件,你可能只想要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版本。

最新更新