goland可以连接docker,并且自动编译/运行镜像.省去了很多繁琐的操作.
0x01 设置docker支持tcp连接
sudo vim /lib/systemd/system/docker.service
注释掉
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
新增
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker.service
测试
curl http://127.0.0.1:2375/info
如果有回应,就是成功
0x02 goland连接docker
打开goland preferences
TCP socket填入你机器API接口
完成之后点击右下角apply,连接成功.
如果是公网的机器,请配置TLS连接 具体之后的文章会写.
0x03 写Dockerfile
项目使用mod进行管理
#使用golang 1.15作为蓝本
FROM golang:1.15 as build
#设置工作目录
WORKDIR /go/
#拷贝所有文件到工作目录
COPY . .
#下载库
RUN export GO111MODULE=on&& \
export GOPROXY=https://goproxy.cn&& \
go mod download
#编译
RUN GOOS=linux CGO_ENABLED=0 go build -ldflags="-s -w" -installsuffix cgo -o web
#新建scratch为蓝本的镜像
FROM scratch as prod
#时区设置
COPY --from=build /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#复制可执行文件
COPY --from=build /go/web /
#如果有配置
#COPY --from=build /go/config.yml /
#运行
CMD ["/app"]
0x04 编写配置
点击dockerfile文件左上角的运行, 选择edit dockerfile ...
挂载和上图一样
0x05 编译,运行
右上角运行DOCKERFILE
直到看到这一幕,成功
右侧可以看到运行日志.编译日志等.
images中右键可以直接push image.
0x06 私有仓库及其他
关于私有仓库可以查看这里:
以及
goland也提供docker的一些基本操作,比如attach
,exec
等.可自行查看.
0x07 补充
如果在本机编译,只需要生成image的话,更简单了. Dockerfile
FROM scratch
#web是编译之后的二进制文件
COPY web /
#配置文件
COPY xxx.yml /
CMD ["./web"]