php – 我应该在我的docker build中运行composer install
我可能有一个看起来像这样的docker文件:
但是我的composer.json中有私有存储库,这要求我复制ssh键以使docker构建正常工作.我觉得在我的php应用程序docker镜像中包装我的ssh键感到很不舒服. 或者,我可以在docker build之外运行composer install(例如在build.sh bash脚本中),并在填充vendor /之后复制目录.这是正确的方法吗? 还有其他方法可以解决这个问题吗? 最佳答案
这是一个非常好的问题,它描述了我现在面对过几次的原则,实际上是两个独立但相关的问题:
1.)如何最好地处理Docker中的瞬态文件 Docker非常擅长封装环境的全部和完全重新创建.如果您在容器“外部”处理部分进程,即在docker构建过程之外运行composer install,那么您的可移植构建过程较少,因为您可能已经引入了您不知道的机器/环境依赖性. 如果你总是在Docker中重建完整的环境,那么你可以保证你的依赖关系总是得到满足,并且你可以将dockerfile提供给其他任何人,并且他们也很有信心能够在没有问题的情况下在本地重建. 瞬态文件非常适合在Docker中构建!所以我会尝试尽可能在容器内构建它们. 2.)如何从Docker构建过程中解除授权 这引出了我们的第二个问题,如何从构建中解除授权? 选项1 – 在作曲家auth.json中为特定构建用户烘焙信用: 正如其他答案所说,您可以“烘焙”凭据,然后再次删除它们.但是你不想像你的ssh键一样“烘烤”敏感的东西.
选项2 – 使信用卡本身成为瞬态并使用docker exec将它们传递到Docker容器中: 我还没有完全测试过这种方法,但我不明白为什么这样的东西不起作用. 1.)你构建了一个基本的PHP容器,它能够运行’composer install'(或者使用docker hub中的一个) 2.)你旋转这个基础容器,使其运行 3.)您使用docker exec将您的信用卡传递给已经烘焙到容器中的包装脚本.包装器脚本将运行composer install
4.)您将此容器提交为新图像
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |