【前语】一转眼,正经用Golang开发一套系统已经有两周多了。因为村夫在好朋友Yaeson的引荐下选择了go-zero作为脚手架,为了方便快速开端,选择了在docker中构建相应的开发环境。

因为人类都知道的原因,golang能够在各种操作系统下开发,其开发也不依赖于特定的图形环境或东西。因而,您既能够运用包含Goland、VS Code在内的IDE内进行开发,也能够直接vim、emacs起来,一切全凭您的个人喜爱。

不过村夫自己,仍是强烈引荐您运用Goland,毕竟运用JetBrains全家桶中的产品一向能帮咱们争取大量的摸鱼时间。

一、村夫刚开端的姿态

Goland:远程开发,村夫并不喜欢,只是离不开
如上图,是从nivinck兄台的mall中搬来的docker-compose.yaml中关于go开发环境的装备。其中volumes将本地的代码途径映射到了容器golang的/usr/src/code目录下。

最开端,村夫是老老实实进入到容器的bash中,vim然后go run。

Goland:远程开发,村夫并不喜欢,只是离不开

村夫仅仅村夫,不是神也不是仙,既是凡人村夫,在写代码的过程中必然会遇到各种上需要调试的问题。 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容器中的代码是从主机目录映射过去了。我很天然的请葛兰朵小姐姐帮我打开了本地所对应的目录。

Goland:远程开发,村夫并不喜欢,只是离不开

看上去很完美,仅仅无法履行程序!是什么鬼?

Goland:远程开发,村夫并不喜欢,只是离不开

小意思,这个难不倒我。

Goland:远程开发,村夫并不喜欢,只是离不开

可是

Goland:远程开发,村夫并不喜欢,只是离不开
这个就有点那个太啥了 算了,我懒得研讨etcd的这个问题(一个声音响起,脑子不好使,就直说呗,玩不转又不丢人)。

好吧,好吧,我便是用一下Goland的编辑器,还有在Goland下面的Terminal里开启容器中的程序也挺方便的。

Goland:远程开发,村夫并不喜欢,只是离不开

三、为了不被二丫笑话

的确,光运用Goland作为编辑器,就能够在咱们写代码时帮咱们处理各种import问题、代码的缩进问题、提示式写代码。作业效率提升很大。

但是,村夫仍是怕被二丫知道后会被笑话。

村夫觉得仍是要解决直接调试的问题,否则二丫知道后一定会笑话村夫始终是个点灯(print)工程师的。

村夫研讨了:

根据dlv的remote debug

这个说是研讨,其实便是学习了一下别人的文档:
用 GoLand/VSCode 调试 Docker 内的 Go 应用 – 知乎 (zhihu.com)

说实话,也挺有用的。有兴趣的同学能够移步去参考一下!

Goland远程开发

这个方法简略且粗暴

  1. 装备容器golang运用sshd
  2. 设置到容器golang的免密ssh登录
  3. 告知Goland到容器golang怎么走

1. 装备容器golang运用sshd

Goland:远程开发,村夫并不喜欢,只是离不开
映射出22端口
Goland:远程开发,村夫并不喜欢,只是离不开
告知docker-compose在构建容器golang时装置openssh-server,并对外暴露容器的22端口

docker-compose up -d

docker-compose会从头构建容器golang,至于后如何发动ssh server服务,辛苦您自己研讨一下。

2. 设置到容器golang的免密ssh登录

生成本机ssh密钥对

Goland:远程开发,村夫并不喜欢,只是离不开
在您主机的~.ssh下将生成文件id_rsa.pub

Goland:远程开发,村夫并不喜欢,只是离不开
将该文件的内容复制到容器golang的目录/root/.ssh/下的文件authorized_keys中,如果没有该文件,则创立一个。

Goland:远程开发,村夫并不喜欢,只是离不开
测试到容器的ssh免密登录

Goland:远程开发,村夫并不喜欢,只是离不开

登录正常

3. 告知Goland到容器golang怎么走

Goland:远程开发,村夫并不喜欢,只是离不开
设置新衔接

Goland:远程开发,村夫并不喜欢,只是离不开

用户、地址、端口及私钥

Goland:远程开发,村夫并不喜欢,只是离不开

设置要开端调试的代码的途径

Goland:远程开发,村夫并不喜欢,只是离不开

您是承受呢仍是承受呢

Goland:远程开发,村夫并不喜欢,只是离不开

欢迎欢迎

Goland:远程开发,村夫并不喜欢,只是离不开

左上角显现当时衔接的远端地址

Goland:远程开发,村夫并不喜欢,只是离不开

能够开启调试了,单步履行走起
Goland:远程开发,村夫并不喜欢,只是离不开

写在后面

还好还好,没有被二丫笑话! 感谢阅读,期望对您有所帮助!

欢迎转发求点赞