Chr*_*ell 2 composer-php docker docker-compose
我似乎无法在 Dockerfile 中运行 composer install 但我可以在构建映像并运行容器后在容器中运行。
这是来自 Dockerfile 的命令:
RUN composer require drupal/video_embed_field:1.5
RUN composer install --no-autoloader --no-scripts --no-progress
Run Code Online (Sandbox Code Playgroud)
输出是:
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Run Code Online (Sandbox Code Playgroud)
但是在使用 docker-compose 运行容器之后:
...
drupal:
image: docker_image
container_name: container
ports:
- 8081:80
volumes:
- ./container/modules:/var/www/html/web/modules
links:
# Link the DB container:
- db
Run Code Online (Sandbox Code Playgroud)
运行 docker exec composer install 将正确安装软件包:
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 1 installs, 0 updates, 0 removals
...
Generating autoload files
Run Code Online (Sandbox Code Playgroud)
我假设 composer.json 和 composer.lock 文件是正确的,因为我可以在容器中运行 composer install 命令而无需任何进一步的努力,但只有在容器运行之后。
更新 尝试将 composer 命令与:
RUN composer require drupal/video_embed_field:1.5 && composer install
Run Code Online (Sandbox Code Playgroud)
同样的问题,“无需安装或更新”。最终,我想继续在 Dockerfile 中使用单独的 RUN 语句来利用 docker 缓存。
您的问题来自这样一个事实,docker-compose即旨在同时编排多个 docker 容器的构建和运行,并且不知何故并没有真正轻松地向从 docker 开始的人展示它在幕后所做的事情。
后面docker-compose up有四个步骤:
docker-compose build 如果需要,并且还没有现有图像,请创建图像docker-compose create 如果需要,并且还没有容器存在,请创建容器docker-compose start 启动现有容器docker-compose logs 记录容器的 stderr 和 stdout所以你必须在那里发现,包含在你里面的动作Dockerfile是在图像创建步骤中执行的。
在容器步骤开始时执行安装文件夹时。
所以,当您尝试使用一个RUN命令,图像创建步骤的一部分,就像文件composer.lock和composer.json被安装在启动步骤,最终不得不通过什么作曲家安装,因为你的文件不被安装在任何地方呢。
如果你做了COPY这些文件中的一个,可能会真正让你到达某个地方,因为你将把作曲家文件作为图像的一部分。
这就是说,请注意挂载的源文件夹将完全覆盖挂载点,因此您最终可能会期望供应商文件夹而没有它。
理想情况下,您应该做的是将其作为ENTRYPOINT,这发生在容器启动的最后一步。
这是一个小小的开发比较:一个 docker 镜像对于一个 docker 容器,就像一个类对于一个类的实例——一个对象。
您的容器都是根据可能很久以前构建的镜像创建的。
您的大部分步骤Dockerfile发生在映像创建时,而不是在容器启动时。
而 docker-compose 的大部分指令都是针对容器构建的自动化,其中包括文件夹的安装。
| 归档时间: |
|
| 查看次数: |
4304 次 |
| 最近记录: |