docker 作为开发环境的问题

2018-11-11 22:02:05 +08:00
 wangxiaoaer

目前的方法是 win 下编码,把 jar 包放到 linux image 里面,运行 containre,通过 remote debug 调试。

但是每次代码有了修改都要重新打包,创建 image、run,感觉比较麻烦,有没有别的好的办法?还是用的方法不对?

另外,对于 nodejs 项目也是同样需要 linux 运行,编码过程采用跟上面类似的办法,修改调试比较繁琐,同时准备发布版本的时候,一般都要对源码进行合并、压缩,这跟开发过程中的 dockerfile 就不一致了,我想到的是创建 2 个 dockerfile,大家一般怎么做的?

1911 次点击
所在节点    问与答
9 条回复
Svizzer
2018-11-11 22:17:27 +08:00
win10 wsl 了解一下,我是 windows 下解压一个 tomcat,idea 配置一个 cat 脚本在 wsl 运行 tomcat 的 sh 启动脚本
Yourshell
2018-11-11 22:27:27 +08:00
volumes 啊
wangxiaoaer
2018-11-11 22:50:33 +08:00
@Yourshell volume 对 php, py 这种管用,对 js Java 这种需要重启的还是不行。另外,linux 下一些包要从 c 编译,挂载目录好像不可以。
byteli
2018-11-11 23:50:53 +08:00
还是当个虚拟机用吧,调试好了再打包
AlphaTr
2018-11-12 00:04:44 +08:00
shell 进入到 docker 容器里面,然后当虚拟机着用
akira
2018-11-12 00:34:29 +08:00
调试不是测试,调试的时候没必要完整打包吧
FeifeiJin
2018-11-12 00:45:32 +08:00
@wangxiaoaer 可否配置为更新文件后,自动更新 image,并自动启动新的容器。
或者把 volumes 挂在到编译后的文件目录
ETiV
2018-11-12 01:10:59 +08:00
打一个环境( JVM )包,jar 通过 -v 挂载进去

restart 可以用 always,network 用 host

更新之后,重启就行了
zgray
2018-11-12 08:55:42 +08:00
之前思考过类似的模式,思考过如下模式,但还没完全实践完成,楼主可以参考下:
1. 对于 Java 或者 nodejs,可以考虑真机直接编译,也可以考虑使用容器的 multi-stage 分编译阶段和开发阶段。
2. 写一个 Dockerfile,将编译后的输出目录用 volume 挂载编译目录到容器中。注意挂载目录,不建议直接挂载文件。目录会灵活点。
3. 剩下的就是编译后怎么重启应用的问题,这里可以参考 nodejs 之类的方案,在容器里面启动 nodemon,监视目录,并打开 debug 端口,当发现目录更新后由容器内的服务自行完成重启动作。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/506806

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX