使用goland自动部署docker镜像

1,375 阅读1分钟

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

image.png 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 ...

image.png

image.png

挂载和上图一样

0x05 编译,运行

右上角运行DOCKERFILE image.png

直到看到这一幕,成功

image.png 右侧可以看到运行日志.编译日志等.

images中右键可以直接push image.

0x06 私有仓库及其他

关于私有仓库可以查看这里:

yeasy.gitbook.io/docker_prac…

以及

yeasy.gitbook.io/docker_prac…

goland也提供docker的一些基本操作,比如attach,exec等.可自行查看.

0x07 补充

如果在本机编译,只需要生成image的话,更简单了. Dockerfile

FROM scratch
#web是编译之后的二进制文件
COPY web /
#配置文件
COPY xxx.yml /
CMD ["./web"]