目前的方法是 win 下编码,把 jar 包放到 linux image 里面,运行 containre,通过 remote debug 调试。
但是每次代码有了修改都要重新打包,创建 image、run,感觉比较麻烦,有没有别的好的办法?还是用的方法不对?
另外,对于 nodejs 项目也是同样需要 linux 运行,编码过程采用跟上面类似的办法,修改调试比较繁琐,同时准备发布版本的时候,一般都要对源码进行合并、压缩,这跟开发过程中的 dockerfile 就不一致了,我想到的是创建 2 个 dockerfile,大家一般怎么做的?
1
Svizzer 2018-11-11 22:17:27 +08:00
win10 wsl 了解一下,我是 windows 下解压一个 tomcat,idea 配置一个 cat 脚本在 wsl 运行 tomcat 的 sh 启动脚本
|
2
Yourshell 2018-11-11 22:27:27 +08:00
volumes 啊
|
3
wangxiaoaer OP @Yourshell volume 对 php, py 这种管用,对 js Java 这种需要重启的还是不行。另外,linux 下一些包要从 c 编译,挂载目录好像不可以。
|
4
byteli 2018-11-11 23:50:53 +08:00 via Android
还是当个虚拟机用吧,调试好了再打包
|
5
AlphaTr 2018-11-12 00:04:44 +08:00 via iPhone
shell 进入到 docker 容器里面,然后当虚拟机着用
|
6
akira 2018-11-12 00:34:29 +08:00
调试不是测试,调试的时候没必要完整打包吧
|
7
FeifeiJin 2018-11-12 00:45:32 +08:00 via Android
@wangxiaoaer 可否配置为更新文件后,自动更新 image,并自动启动新的容器。
或者把 volumes 挂在到编译后的文件目录 |
8
ETiV 2018-11-12 01:10:59 +08:00
打一个环境( JVM )包,jar 通过 -v 挂载进去
restart 可以用 always,network 用 host 更新之后,重启就行了 |
9
zgray 2018-11-12 08:55:42 +08:00
之前思考过类似的模式,思考过如下模式,但还没完全实践完成,楼主可以参考下:
1. 对于 Java 或者 nodejs,可以考虑真机直接编译,也可以考虑使用容器的 multi-stage 分编译阶段和开发阶段。 2. 写一个 Dockerfile,将编译后的输出目录用 volume 挂载编译目录到容器中。注意挂载目录,不建议直接挂载文件。目录会灵活点。 3. 剩下的就是编译后怎么重启应用的问题,这里可以参考 nodejs 之类的方案,在容器里面启动 nodemon,监视目录,并打开 debug 端口,当发现目录更新后由容器内的服务自行完成重启动作。 |