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