dockerfile 不更新容器

sim*_*w16 3 provisioning php-extension docker docker-compose

我正在使用 docker 使用应用程序(我不是很熟悉),我需要添加 2 个新的 PHP 扩展。我Dockerfile对现有图像进行了如下更改:

FROM php:7.2-fpm

RUN apt-get update

RUN apt-get install -y git unzip

RUN php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer

RUN apt-get install -y git libpng-dev \
    && docker-php-ext-install gd

RUN apt-get install -y mysql-client \
    && docker-php-ext-configure pdo_mysql --with-pdo-mysql=mysqlnd \
    && docker-php-ext-install pdo_mysql

RUN apt-get install -y libgmp-dev bcmath \
    && docker-php-ext-configure gmp \
    && docker-php-ext-install gmp \
    && docker-php-ext-install bcmath

RUN pecl install xdebug \
    && docker-php-ext-enable xdebug

ADD docker/templates/usr/local/etc/php/conf.d/uploads.ini /usr/local/etc/php/conf.d/uploads.ini
Run Code Online (Sandbox Code Playgroud)

我的新行是:

RUN apt-get install -y libgmp-dev bcmath \
&& docker-php-ext-configure gmp \
&& docker-php-ext-install gmp \
&& docker-php-ext-install bcmath
Run Code Online (Sandbox Code Playgroud)

我试过了docker-compose restart,我试过docker-compose downdocker-compose up,我完全删除了容器并用up. 不管我怎么努力,我在做一个composer require

您的系统中缺少请求的 PHP 扩展 bcmath。

我不确定为什么会这样。为什么不安装扩展程序,为什么我完全删除内容并在其中写入乱码Dockerfile,它总是成功运行。它缓存了吗?

有人可以解释我如何重新配置​​我所做的新更改吗?

片段docker-compose.yml

services:
  web:
    build:
      context: ./
      dockerfile: docker/web.docker
    working_dir: /var/www
    volumes:
      - ./:/var/www
    ports:
      - 81:80
  app:
    build:
      context: ./
      dockerfile: docker/app.docker
    working_dir: /var/www
    volumes:
      - ./:/var/www
    environment:
      - "LARAVEL_ENVIRONMENT=local"
Run Code Online (Sandbox Code Playgroud)

Dmi*_*rii 5

您需要重建图像

docker-compose build
Run Code Online (Sandbox Code Playgroud)

然后重新运行容器

docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

  • 如果由于缓存而不想应用更改,您可以添加`--no-cache`。 (2认同)