Git   发布时间:2022-05-05  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Docker容器之间共享预编译的资产大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个Nginx容器与我的轨道容器分开,并希望能够使用Nginx容器从rails提供预编译的资产。 这听起来像一个卷容器的工作,但我已经很快就需要学习docker和无休止地阅读文档了自己的困惑。 有没有人需要处理类似的情况?

docker Nginx容器没有收到来自外部的请求,连接被拒绝

在Windows 10上的Docker中将当前目录挂载为卷

Docker用Nginx编写主机path错误

Docker错误:无法find包git

Docker Django Nginx gunicorn URL丢弃端口

我有同样的问题。 这是我目前的工作:

选项1:为Nginx和应用程序使用单个图像

这样,我可以构建一次图像(使用应用程序,预编译资源和Nginx),然后运行它的两个实例:一个运行应用程序服务器,另一个运行Nginx前端:

docker build -t Hello . docker run --name Hello-app Hello rackup docker run --name Hello-web -p 80:80 --link Hello-app:app Hello Nginx

不漂亮,但很容易设置和升级

选项2:使用共享卷,并将资源预编译为作业

共享卷不能在构建过程中更新,但可以通过容器实例进行更新。 所以我们可以在运行@R_754_9616@之前运行我们的rake任务来预编译资源:

docker build -t Hello . docker run -v /apps/Hello/assets:/app/public/assets Hello rake assets:precompile docker run --name Hello-app Hello rackup docker run --name Hello-web -p 80:80 --link Hello-app:app -v /apps/Hello/assets:/usr/share/Nginx/html/assets Nginx

这看起来像一个更强大的选项,但将需要更复杂的仪器。 但是,我倾向于这个选项,因为无论如何,我们都需要一个单独的作业进行数据库迁移。

选项3:在构建时将资产分发到CDN

您的Dockerfile可以将生成的资产直接上传到CDN。 然后,您将您的Rails应用程序配置为使用它作为asset_host 。 就像是:

RUN rake assets:precompile && aws s3 sync public/assets s3://test-assets/

我目前正在试验这个选项。 由于我使用的是Amazon CloudFront,因此我可以使用AWS CLI将产生的资产同步到S3。 这也是一个宝石( asset_sync ),但它看起来陈旧。

缺点是您必须将所需的AWS凭证发送到构建上下文或Dockerfile本身 – 如果您使用的是自动构建,则可能需要将它们提交到源存储库。

我建议预先编译Docker容器中的资源,因为在这种情况下,您可以在没有任何问题的情况下将其运行到任何环境,否则在运行docker容器之前,您应该将共享的预先完成的资源复制到新环境,装入它们,并且只有在运行docker容器后。

一个与资产版本有关的问题。 我的意思是说你的@L_616_29@必须使用与它兼容的资源,否则你将有不同的CSS和JS的问题。 所以,这是为什么你应该预先编译Docker容器中的资源的第二点。

对于生产,@ maxd是正确的:你应该把编译的资产添加你的图像。 但是,为了发展,我认为你是对的。 使用由以下使用的卷容器:

rails容器来存储预编译的资源

Nginx容器来服务资产

另一种方法是将主机目录挂载到容器中。

您可以在“ 管理容器中的数据”用户指南中找到更多帮助

大佬总结

以上是大佬教程为你收集整理的在Docker容器之间共享预编译的资产全部内容,希望文章能够帮你解决在Docker容器之间共享预编译的资产所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: