2021年9月27日更新
之前文章方法只适合没有grpc的情况下开发,因为goland(够烂的)是不支持远程SDK开发,昨晚弄到2点,翻阅外国文章,然后在jetbrains找到官方答案,期待后续版本吧。
背景:
因为工作环境不同,每次都要都要搭不同go的环境,所以把心一横都把环境放在docker上,这样每次就用dockerfile就可以了。
如果能科学上网估计都能查到这文章
https://blog.jetbrains.com/go...
如果根据jetbrain 这篇文章来原理是goland build 新docker,但是会有个问题,每次run或build 上在dockerdesk里多出一些奇怪的容器(到现在我也查不明原因)。然后我逆向思维,做成在goland连接本地build 好的docker,然后goland terminal开发测试。
实际操作:
一、基于自己需求写dockerfile
FROM centos:8.4.2105
#尽量小写run,合在一起可以减小层
RUN yum install -y curl wget && \
wget -O /etc/yum.repos.d/CentOS-Linux-BaseOS.repo https://mirrors.aliyun.com/repo/Centos-8.repo && \
yum install -y tar bzip2 unzip passwd sudo yum-utils hostname net-tools man which && \
yum install -y gcc gcc-c++ git make automake cmake patch libpng-devel libjpeg-devel && \
yum -y install openssh-server && \
yum clean all && \
mkdir -p /var/run/sshd && \
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key && \
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key && \
/bin/echo 'root:123456'|chpasswd && \
/bin/sed -i 's/.*session.*required.*pam_loginuid.so.*/session optional pam_loginuid.so/g' /etc/pam.d/sshd && \
/bin/echo -e "LANG=\"en_US.UTF-8\"" > /etc/default/local && \
rm -rf /run/nologin
RUN cd /tmp &&\
wget -O go.tar.gz https://golang.google.cn/dl/go1.17.1.linux-amd64.tar.gz && \
tar --remove-files -C /usr/local/ -zxf go.tar.gz && \
mkdir -p /go && \
ln -sv /usr/local/go/bin/go /bin
#env 放在最后
ENV GOROOT=/usr/local/go
ENV GOPATH=/go
ENV PATH=$GOROOT/bin:$PATH
EXPOSE 22
CMD /usr/sbin/sshd -D
二、build 镜像docker build -t docker_centos .
三、启动容器,这里用dockerdesk,记得要挂载宿主机开发环境
四、配置goland
window:setting->build、execution->docker
在里面添加一个本地docker
mac如下图:
设置成功后在service里面会多出docker标志
五、测试
在对应的容器里面,选中右手键,添加terminal
然后写代码运行
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。