将 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'.