dockerfile未更新容器

时间:2019-03-22 23:03:01

标签: docker docker-compose provisioning php-extension

我正在使用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 apt-get install -y libgmp-dev bcmath \
&& docker-php-ext-configure gmp \
&& docker-php-ext-install gmp \
&& docker-php-ext-install bcmath

我尝试过docker-compose restart,我尝试过docker-compose down,然后尝试过docker-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"

谢谢。

1 个答案:

答案 0 :(得分:2)

您需要重建图像

docker-compose build

然后再次运行容器

docker-compose up -d