Dockerfile не обновляет контейнер - PullRequest
0 голосов
/ 23 марта 2019

Я работаю с приложением, использующим докер (я не очень знакомый), и мне нужно добавить 2 новых расширения php.Я изменил файл Docker для существующего образа следующим образом:

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 отсутствует в вашей системе.

Я не уверенпочему это происходит.Почему расширение не будет установлено, и как получится, если я полностью удалю содержимое и напишу искаженный текст в файле Docker, оно всегда работает успешно.Кэшируется ли это?

Может кто-нибудь объяснить, как я переназначаю новые внесенные изменения?

Вот фрагмент от 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 Ответ

2 голосов
/ 23 марта 2019

Вам нужно перестроить изображение

docker-compose build

и следующие повторные контейнеры

docker-compose up -d
...