【发布时间】:2020-06-03 19:41:17
【问题描述】:
目前我的 docker/ddev 设置正在容器内运行 Composer 版本 1.10.6 2020-05-06。
我想让容器内的 composer 版本为 1.10.7 2020-06-03。
我找到了一种方法:ddev exec sudo composer self-update,但这不是永久性的。 ddev 重新启动后,容器恢复为使用 1.10.6。
在我的所有搜索中,我都找不到更新创建容器的文档的方法,因此它们会永久更新作曲家。我不需要它在每次启动容器时都尝试更新,我只需要现在能够告诉它永久更改为我想要的版本。
附加部分:将RUN sudo composer self-update 添加到 .ddev/web-build/Dockerfile 会使其每次都尝试更新,这并不理想。我想在准备好后更新,因为我还需要更新我的测试服务器以匹配版本。
我将该命令添加到我的 Dockerfile 并更新到 1.10.7。我从 Dockerfile 中删除了该命令,以便每次重新启动 ddev 时它都不会更新。当我重新启动 ddev(在 Dockerfile 中没有该命令)时,它将 composer 恢复到 1.10.6。
在哪里获得使用该版本的说明?我需要找到它并告诉它改用 1.10.7。我不希望它每次都更新自己ddev restart。
【问题讨论】:
-
我对 ddev 不熟悉,但我认为您所做的是基于 Dockerfile。如果是这样,你可以在那里做
composer self-update,这样当你重建图像时,你会得到最新版本吗? -
halfer,肯定是的。但是每次构建容器时它都会更新。我想选择何时更新。例如,我们最近在测试服务器上更新了 composer 版本,因此也想为本地环境更新它。但是,如果我让本地环境在每次容器启动时自动更新,它将最终领先于我们的服务器。我希望能够为容器设置版本而不是自动更新。这甚至可能吗?
-
我想我要说的和rfay的评论一样——除非ddev有什么特别之处,否则你只需要在需要更新时重建你的Docker镜像。否则,只需使用现有的(开发环境)或从注册表中提取它(干净的持续集成环境)。
-
出于好奇:即使我完全理解使用最新版本总是一个好主意,但有什么好的理由这样做吗?即使您现在构建容器,添加最新可用版本的 Composer,这也会过时,因此需要重新构建。另一方面。你从中得到什么?有什么东西在 1.10.6 中不起作用,但在 1.10.7 中修复了吗?
-
Nico,在这种特殊情况下,我们升级了其中一台服务器上的 composer 来修复错误,因此需要更新我们的本地环境以保持一切匹配。这就是为什么我想指定我的版本而不是在那之后继续更新。我们不想继续更新只是为了更新,而只是因为我们有一个理由。
标签: docker composer-php ddev