我已经制作了一个容器,我正在通过
docker-compose
构建它,这是.yml
:
gateway:
build: .
image: sng
container_name: sng
command: tail -F /dev/null
ports:
- "10091:10091"
volumes:
- vendor:/root/vendor
volumes:
vendor:
并且
Dockerfile
只是拉取图像并运行 composer install
:
FROM php:7-fpm-alpine
EXPOSE 10091
WORKDIR /root
COPY . .
RUN apk add composer && composer install --no-progress
有没有办法让我自动将创建的
vendor
文件夹同步回代码库,而无需从主机运行 docker cp
?
天哪,我很抱歉!我做了你想要的,只是将供应商卷安装到供应商文件夹中。
volumes:
- path/to/local/vendor:vendor
我将通过几个步骤向您解释到底发生了什么以及为什么安装的依赖项没有复制到主机。
我已经看到了解决这个问题的各种方法。在我看来,最好不要在容器构建期间安装依赖项(这是可能的,但效率低下),而是仅在容器启动后安装。
容器启动后,您可以使用示例命令在容器上安装依赖项,并将它们与本地计算机组装。没有什么可以阻止您将命令移动到将在 docker 启动期间运行的 .sh 文件,如果具有依赖项的文件夹不存在,它将安装它们。
docker exec -it docker_name composer install