【前语】一转眼,正经用Golang开发一套系统已经有两周多了。因为村夫在好朋友Yaeson的引荐下选择了go-zero作为脚手架,为了方便快速开端,选择了在docker中构建相应的开发环境。
因为人类都知道的原因,golang能够在各种操作系统下开发,其开发也不依赖于特定的图形环境或东西。因而,您既能够运用包含Goland、VS Code在内的IDE内进行开发,也能够直接vim、emacs起来,一切全凭您的个人喜爱。
不过村夫自己,仍是强烈引荐您运用Goland,毕竟运用JetBrains全家桶中的产品一向能帮咱们争取大量的摸鱼时间。
一、村夫刚开端的姿态
如上图,是从nivinck兄台的mall中搬来的docker-compose.yaml中关于go开发环境的装备。其中volumes将本地的代码途径映射到了容器golang的/usr/src/code目录下。
最开端,村夫是老老实实进入到容器的bash中,vim然后go run。
村夫仅仅村夫,不是神也不是仙,既是凡人村夫,在写代码的过程中必然会遇到各种上需要调试的问题。 dlv debug,也搞过。实话说dlv和gdb很像,但比较gdb要好用不少。不过用了一阵,仍是觉得不痛快!于是乎,村夫拿出了每一位码工(尽管村夫现在从事的作业并不“巨大上”,但这儿咱们不用码农这个说法,无关乎对码工作业的褒贬,仅仅发自内心的尊一下农。)都会的print大法。
曾经有一位小兄弟跟我讲,说只要写PC程序的才print呢。写嵌入式的就不会用print。我说“好吧,你说得对!” 我必定不会去跟他争点灯就print
二、村夫涨姿态
致普通的咱们:作业,便是要动脑子,尽管咱们最拿手的便是Ctrl+C和Ctrl-V
从C语言的printf()到C艹的cout <<,又或者是佳娃的System.out.println(),又或是够浪的fmt.Println(),我不知道您运用的熟练程度如何!横竖各种print,村夫都用得登峰造极!
print好用,但就像公司楼下的板面好吃一样,吃多了总是要腻得!
好吧,好吧,我供认便是板面隔壁店的黄焖鸡深深得招引了村夫。
之前帮儿子搞作业,跟皮查姆(PyCharm)耍过朋友;被老板扔去顶缸搞佳娃(Java)时,摸过阿娣(Idea)漂亮的脸蛋。JetBrains家的小姐姐,每一位都那么可人。我供认我又喜欢上了葛兰朵(Goland)。
如前面说的,golang容器中的代码是从主机目录映射过去了。我很天然的请葛兰朵小姐姐帮我打开了本地所对应的目录。
看上去很完美,仅仅无法履行程序!是什么鬼?
小意思,这个难不倒我。
可是
这个就有点那个太啥了 算了,我懒得研讨etcd的这个问题(一个声音响起,脑子不好使,就直说呗,玩不转又不丢人)。
好吧,好吧,我便是用一下Goland的编辑器,还有在Goland下面的Terminal里开启容器中的程序也挺方便的。
三、为了不被二丫笑话
的确,光运用Goland作为编辑器,就能够在咱们写代码时帮咱们处理各种import问题、代码的缩进问题、提示式写代码。作业效率提升很大。
但是,村夫仍是怕被二丫知道后会被笑话。
村夫觉得仍是要解决直接调试的问题,否则二丫知道后一定会笑话村夫始终是个点灯(print)工程师的。
村夫研讨了:
根据dlv的remote debug
这个说是研讨,其实便是学习了一下别人的文档:
用 GoLand/VSCode 调试 Docker 内的 Go 应用 – 知乎 (zhihu.com)
说实话,也挺有用的。有兴趣的同学能够移步去参考一下!
Goland远程开发
这个方法简略且粗暴
- 装备容器golang运用sshd
- 设置到容器golang的免密ssh登录
- 告知Goland到容器golang怎么走
1. 装备容器golang运用sshd
映射出22端口
告知docker-compose在构建容器golang时装置openssh-server,并对外暴露容器的22端口
docker-compose up -d
docker-compose会从头构建容器golang,至于后如何发动ssh server服务,辛苦您自己研讨一下。
2. 设置到容器golang的免密ssh登录
生成本机ssh密钥对
在您主机的~.ssh下将生成文件id_rsa.pub
将该文件的内容复制到容器golang的目录/root/.ssh/下的文件authorized_keys中,如果没有该文件,则创立一个。
测试到容器的ssh免密登录
登录正常
3. 告知Goland到容器golang怎么走
设置新衔接
用户、地址、端口及私钥
设置要开端调试的代码的途径
您是承受呢仍是承受呢
欢迎欢迎
左上角显现当时衔接的远端地址
能够开启调试了,单步履行走起
写在后面
还好还好,没有被二丫笑话! 感谢阅读,期望对您有所帮助!
欢迎转发求点赞