将 Dockerfile 从 php:7.2-fpm 更新到 php:7.3-fpm 时出错
Error updating Dockerfile FROM php:7.2-fpm to php:7.3-fpm
因为我想要 PHP 7.3 功能,所以我正在尝试将项目从 PHP 7.2 更新到 PHP 7.3。在 docker-compose.yml 我有:
php:
build: ./docker/php
volumes:
- .:/var/www/html
links:
- mysql:mysql
depends_on:
- mysql
networks:
- pimcorenet
我的 Dockerfile 是这样的:
FROM php:7.2-fpm
# install git
RUN apt-get update && \
apt-get install -y --no-install-recommends git
#install some base extensions
RUN apt-get install -y \
zlib1g-dev \
zip \
libpng-dev \
exiftool \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libicu-dev \
libpq-dev \
libxpm-dev \
libvpx-dev \
mariadb-client \
libxml2-dev
RUN docker-php-ext-install -j$(nproc) \
zip \
exif \
bcmath \
intl \
pcntl \
mysqli \
pdo \
gd \
pdo_mysql \
pdo_pgsql \
mbstring \
soap \
opcache \
iconv
# Install Imagick
RUN apt-get update && apt-get install -y \
libmagickwand-dev --no-install-recommends \
&& pecl install imagick \
&& docker-php-ext-enable imagick
# Install Composer
RUN echo "Install Composer"
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer --version
我收到以下错误:
E: Failed to fetch
http://cdn-fastly.deb.debian.org/debian/pool/main/r/readline/readline-common_7.0-5_all.deb
Could not resolve 'cdn-fastly.deb.debian.org' E: Failed to fetch
http://cdn-fastly.deb.debian.org/debian/pool/main/j/jquery/libjs-jquery_3.3.1~dfsg-3_all.deb
Could not resolve 'cdn-fastly.deb.debian.org' E: Failed to fetch
http://cdn-fastly.deb.debian.org/debian/pool/main/f/freetype/freetype2-doc_2.9.1-3_all.deb
Could not resolve 'cdn-fastly.deb.debian.org' E: Failed to fetch
http://cdn-fastly.deb.debian.org/debian/pool/main/i/icu/icu-devtools_63.1-6_amd64.deb
Could not resolve 'cdn-fastly.deb.debian.org' E: Failed to fetch
http://cdn-fastly.deb.debian.org/debian/pool/main/j/javascript-common/javascript-common_11_all.deb
Could not resolve 'cdn-fastly.deb.debian.org' ..... more errors
ERROR: Service 'php' failed to build: The command '/bin/sh -c apt-get
install -y zlib1g-dev zip libpng-dev
exiftool libfreetype6-dev libjpeg62-turbo-dev
libmcrypt-dev libicu-dev libpq-dev libxpm-dev
libvpx-dev mariadb-client libxml2-dev' returned a
non-zero code: 100
这到底是什么问题?是因为某些必需的 PHP 扩展还不能用于 PHP 7.3 或已被替换?我该如何解决这个问题?刚刚将 FROM php:7.2-fpm
更改为 FROM php:7.3-fpm
。
您未能 grok 容器。因此,您采用了错误的方法。
您不应该尝试 'upgrade' 一个 php 7.2 到 7.3 的容器。
您应该首先创建一个基于 7.3 的新容器映像。
顺便说一句,我建议将其作为现有 7.2 容器的新的独立服务,即新的 Docker 文件,而不是仅仅更改现有的 container/Dockerfile。这将允许您同时测试两个版本,而不是 'leap of faith' 转换。
此外,我建议直接构建 Debian 或 Ubuntu 映像,而不是浏览 'official' Docker 映像。它们仅在 Docker 制作的意义上是官方的,但在我看来它们并没有得到很好的支持。
这是我目前使用的 dockerfile:https://github.com/Danack/example/blob/master/docker/php_fpm/Dockerfile 将 7.2 切换到 7.3 应该 'just work'.
因为我想要 PHP 7.3 功能,所以我正在尝试将项目从 PHP 7.2 更新到 PHP 7.3。在 docker-compose.yml 我有:
php:
build: ./docker/php
volumes:
- .:/var/www/html
links:
- mysql:mysql
depends_on:
- mysql
networks:
- pimcorenet
我的 Dockerfile 是这样的:
FROM php:7.2-fpm
# install git
RUN apt-get update && \
apt-get install -y --no-install-recommends git
#install some base extensions
RUN apt-get install -y \
zlib1g-dev \
zip \
libpng-dev \
exiftool \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libicu-dev \
libpq-dev \
libxpm-dev \
libvpx-dev \
mariadb-client \
libxml2-dev
RUN docker-php-ext-install -j$(nproc) \
zip \
exif \
bcmath \
intl \
pcntl \
mysqli \
pdo \
gd \
pdo_mysql \
pdo_pgsql \
mbstring \
soap \
opcache \
iconv
# Install Imagick
RUN apt-get update && apt-get install -y \
libmagickwand-dev --no-install-recommends \
&& pecl install imagick \
&& docker-php-ext-enable imagick
# Install Composer
RUN echo "Install Composer"
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer --version
我收到以下错误:
E: Failed to fetch http://cdn-fastly.deb.debian.org/debian/pool/main/r/readline/readline-common_7.0-5_all.deb Could not resolve 'cdn-fastly.deb.debian.org' E: Failed to fetch http://cdn-fastly.deb.debian.org/debian/pool/main/j/jquery/libjs-jquery_3.3.1~dfsg-3_all.deb Could not resolve 'cdn-fastly.deb.debian.org' E: Failed to fetch http://cdn-fastly.deb.debian.org/debian/pool/main/f/freetype/freetype2-doc_2.9.1-3_all.deb Could not resolve 'cdn-fastly.deb.debian.org' E: Failed to fetch http://cdn-fastly.deb.debian.org/debian/pool/main/i/icu/icu-devtools_63.1-6_amd64.deb Could not resolve 'cdn-fastly.deb.debian.org' E: Failed to fetch http://cdn-fastly.deb.debian.org/debian/pool/main/j/javascript-common/javascript-common_11_all.deb Could not resolve 'cdn-fastly.deb.debian.org' ..... more errors
ERROR: Service 'php' failed to build: The command '/bin/sh -c apt-get install -y zlib1g-dev zip libpng-dev
exiftool libfreetype6-dev libjpeg62-turbo-dev
libmcrypt-dev libicu-dev libpq-dev libxpm-dev libvpx-dev mariadb-client libxml2-dev' returned a non-zero code: 100
这到底是什么问题?是因为某些必需的 PHP 扩展还不能用于 PHP 7.3 或已被替换?我该如何解决这个问题?刚刚将 FROM php:7.2-fpm
更改为 FROM php:7.3-fpm
。
您未能 grok 容器。因此,您采用了错误的方法。
您不应该尝试 'upgrade' 一个 php 7.2 到 7.3 的容器。
您应该首先创建一个基于 7.3 的新容器映像。
顺便说一句,我建议将其作为现有 7.2 容器的新的独立服务,即新的 Docker 文件,而不是仅仅更改现有的 container/Dockerfile。这将允许您同时测试两个版本,而不是 'leap of faith' 转换。
此外,我建议直接构建 Debian 或 Ubuntu 映像,而不是浏览 'official' Docker 映像。它们仅在 Docker 制作的意义上是官方的,但在我看来它们并没有得到很好的支持。
这是我目前使用的 dockerfile:https://github.com/Danack/example/blob/master/docker/php_fpm/Dockerfile 将 7.2 切换到 7.3 应该 'just work'.