因为项目需要,可能使用Go调用Python 3的接口,趁这个机会实践了一下,如何用Docker+VS Code迅速地搭建开发环境,真的非常非常非常香!
准备Docker Image和Container
先使用Docker迅速的Build出包含了Go,Python 3.7的Image,同时也下载了DataDog/go-python3。这是一个挺不错的Go Module,可以用来调用Python 3的C API,进而调用Python的API(后续写篇文章介绍一下用法)。
1 2 3 4 5 |
FROM debian:10 RUN apt update && \ apt install -y git golang python3 python3-dev && \ go get github.com/DataDog/go-python3 |
有了Dockerfile,再使用docker build生成Image
1 |
docker build -t go_dev:1.0 . |
Image生成后,就可以启动Container了,
1 |
docker run -it --name go_dev -v H:\go_dev:/go_dev go_dev:1.0 |
Container的名字叫go_dev, 同时挂载了H:\go_dev到/go_dev上。Container里的go, python3都已经安装完成。
使用VSCode连接到Docker container
首先需要安装Remote Container的插件,真的是个神器!
安装完成后,可以在左下角一个新的张铎图标,点击后就可以连接刚才启动的Container了。
在菜单中选择,“Attach to Running Container”
在后面的菜单中,选择Container “go_dev”。第一次连接时,需要选择一个目录来写代码了。连接后,打开Terminal也默认调整在Container里的目录。非常方便!
在Remote模式下,代码的很多分析是在Container里完成的,所以在第一次连接完成后,你需要把一些需要的Plugin再安装一下,比如Go语言的支持,Python的支持等等。这个要根据实际的需要。
好了,开发环境搞定,继续板砖写代码吧!
vs code在容器外部,就可以直接使用容器内的环境进行编译和调试?
是的。VSCode只是一个Editor,Debugger要跑在Container里。
“在Remote模式下,代码的很多分析是在Container里完成的,所以在第一次连接完成后,你需要把一些需要的Plugin再安装一下,比如Go语言的支持,Python的支持等等。这个要根据实际的需要。”
那上面这部分的插件安装如果要重新生成镜像的话,用Dockerfile怎么弄?
如果想用Dockerfile,我觉得可以看看VSCode安装VSIX文件的方法,但我还没有试过。
除了插件之外,VSCode Server也需要在Container里安装,Dockerfile里可以要使用wget下载对应的VSCode Server版本,网上找一下,有具体的方法。