【发布时间】:2019-07-16 21:35:24
【问题描述】:
我的目标是在 docker 文件的一个阶段获取 php 依赖项,然后将这些依赖项复制到下一阶段(vendor/ 目录)。但是,一旦在docker-compose.yml 中指定了一个卷,它将覆盖COPY 语句,就好像它从未发生过一样。
docker-compose.yml
version: "3"
services:
app:
build:
context: .
dockerfile: docker/app/Dockerfile
volumes:
- .:/var/www/html
docker/app/Dockerfile
FROM composer AS php_builder
COPY . /app
RUN composer install --no-dev
FROM php:7.1-fpm
COPY --from=php_builder /app/vendor /var/www/html/vendor
构建和运行它的结果是一个/var/www/html 目录,它没有我期望的vendor/ 目录。
我的猜测是,这是因为docker-compose.yml 服务定义中指定的卷实际上发生在COPY --from 语句之后,这似乎是合乎逻辑的。但是我该如何解决呢?我仍然想在这里使用卷而不是ADD 或COPY 命令。
【问题讨论】:
-
唯一的选择是将供应商文件夹放在其他地方,因为卷总是会覆盖它。无论如何,它不应该在 docroot 中。
标签: php docker docker-compose