首先需要明确的是:Docker到底能够带来什么样的好处,Docker带来轻量级虚拟化容器方面的优势(资源利用率高,创建快捷,环境纯粹) ? 还是镜像带来的优势(便于部署,记录容器状态,持续集成等)? 确定了使用的场景,才好说明代码到底放到什么地方更合适。
举几个例子,可以根据场景灵活的方式使用代码和数据:
场景一:如果做好了所有代码,想分发给其他使用者,这种无疑代码放到image是最佳的,包括数据库初始化脚本等。
场景二:如果是开发环境,代码是用于调试,代码不应该在image里面,代码最好是在本机电脑上,如MacOS,Windows,Linux的个人PC上,那么就通过volume方式进行挂载是最方便的,修改代码直接就可以进行调试。如果开发环境在服务器上,可以通过远程mount的方式,mount到本机进行开发修改。
场景三:如果是测试环境,建议使用git方式,代码不在image中,通过docker exec到容器内pull对应测试tag的代码。当然也可以在宿主机pull,然后docker cp到对应的测试容器。
没有哪种最优,只有最适合的。
===========================
docker部署两种情形:
1)开发环境
由于开发环境代码一直在变动,而且多人通过git协作,于是代码都是放在外面,构建一个运行环境的image,然后代码部分用volume映射进去,方便随时调整。
2)生成环境
我们的生产环境比较独特,一般都是给客户安装成品而不是自己的服务器,一方面为了保护代码,另一方面是减少不必要的麻烦,于是就把代码都构建在image里面,这样直接在客户那边把镜像运行起来就行,只是个下载的时间,也不需要其他操作。
在自己的服务器上,由于基本是内部演示之类,所以完全就是当做开发环境来对待的,参见第一条。
Docker嘛,既然可以虚拟环境,那么怎么合适怎么用吧,目的就是开发的时候启动的快+重新构建快,给客户安装的时候要尽可能的简单。
===========================
1) 镜像相当于模板,开发代码放镜像的话,减低镜像的复用性。
2) 代码放在image里管理是否会造成本地存储和网络传输上不必要的负担。
===========================
实用场景之一:
1、在开发环境,因为code的频繁变更,通过volume方式进行挂载方便。
2、代码提交到git repo后,通过jenkins打包编译,把编译后的代码包生成到docker image中,并打好对应的tag,上传到docker registy。之后进入测试环境进行部署,测试。
3、通过paas ci后的docker image就可以直接在生产环境进行部署了。
相关推荐
如何下载此源代码 使用获取该存储库URL上方的Clone or download按钮 在IntelliJ IDEA中:文件→新建→来自版本控制的项目→Git→放入此存储库的URL 如何在本地测试 使用应用程序生成了jar: $ gradle bootJar 使用...
描述中提到"重新设计了我的旧网站并将其放在导轨上以具有更多功能",这表明开发者将原有的网站进行了重构,并利用 Rails 的强大功能增加了新的特性。Rails 提供了一系列内置的功能,如路由、数据库迁移、测试工具等...
前段需要在业务中实现某些时间段的简单定时任务,类似crontab的调度,因为业务会放在docker中,所以不想用直接用crontab,在网上搜了一下,发现一个开源的实现 Pomelo.AspNetCore.TimedJob,使用简单,但是因为是...
2.401.3 LTS 可能包含了对现有插件的更新,以优化与新 JDK 版本的兼容性,并可能引入新的插件以增强功能,例如自动化测试、代码质量检查、容器编排等。 4. **性能提升**:每个新版本都会对性能进行优化,Jenkins 2....
在 SlashMusicBot 中,Kotlin 的这些优点使得代码更易于阅读、理解和维护。 要了解 SlashMusicBot 的工作原理,我们需要关注几个关键知识点: 1. **Discord API**:SlashMusicBot 使用 Discord 的 Bot API 来与...