命令docker-compose(re)build不会构建容器的新实例

时间:2019-09-26 22:04:51

标签: php apache docker docker-compose

我用这样的方式创建了./docker/app/Dockerfile

FROM php:7.3-apache
RUN a2enmod rewrite
RUN docker-php-ext-install pdo_mysql && docker-php-ext-enable pdo_mysql
(...)

我的docker-compose:

  app:
    build: './docker/app/'
    image: php:7.3-apache
    ports:
      - 80:80
    volumes:
    (...)

我正在尝试构建容器的干净实例。我希望它看起来像第一个版本(我想测试我的Dockerfile是否正常,并将安装所有必需的软件包)。 但是在发出命令后: docker-compose build app我看到如下警告:

Module rewrite already enabled
warning: pdo_mysql (pdo_mysql.so) is already loaded!

命令docker-compose build --force-rm appdocker-compose build --force-rm --no-cache app的工作原理相同。一旦安装的软件包仍然存在,并且在构建过程中我的Dockerfile的命令毫无意义。

所以我有2个问题:

1)如何从头开始构建我的应用容器的新的干净版本?

2)如果docker-compose builddocker-compose build --force-rm不建立新映像,它们是做什么用的?

1 个答案:

答案 0 :(得分:1)

尝试使用以下方法强制构建:

docker-compose up -d --force-recreate

或在构建之前删除所有内容:

docker-compose rm
docker image prune