当前位置: 首页 > 科技观察

Go语言如何使用Docker部署项目?

时间:2023-03-21 02:06:19 科技观察

1简介Go语言可以使用内置的命令行工具gobuild来编译生成可执行文件。由于Go1.5版本已经实现了bootstrapping,交叉编译也很方便,只需要使用GOOS、GOARCH环境变量指定目标平台和架构即可。部署Go项目,只需要运行可执行文件即可。一般有三种方式,分别是使用nohup命令、使用supervisord进程管理工具、使用Docker。在本文中,我们将介绍如何使用Docker来部署Go项目。阅读本文需要读者了解Docker的基本操作。2.web项目首先我们开发一个简单的GoWeb项目,使用Go自带的命令行工具gobuild编译生成可执行文件./hello。项目目录:.├──Dockerfile├──go.mod├──hello├──main.go└──service.log我们使用Go标准库编写一个Web项目,运行编译好的可执行程序,访问http://127.0.0.1:8080/hello,输出你好词。#编译gobuild-ohello./hello#访问curlhttp://127.0.0.1:8080/hello#输出helloworld如果使用curl访问,可以正常输出helloworld,说明我们的程序运行正常。需要注意的是,在我们构建Docker镜像之前,需要重新使用如下命令交叉编译生成linux平台的可执行程序。#编译GOOS=linuxGOARCH=amd64gobuild-ohello完成以上准备后,我们开始编写Dockerfile,使项目支持使用Docker部署。Dockerfile:#BaseimageFROMalpine:3.12#MaintainerMAINTAINERfrank#dockerbuild时执行命令-创建目录RUNmkdir-p"/data/app"\&&ln-sf/dev/stdout/data/app/service.log#工作目录WORKDIR"/data/app"#CopyCOPYhello/data/app/hello#dockerrun时执行命令ENTRYPOINT[./hello"]写好Dockerfile后,我们就可以使用docker命令构建image,前提是我们已经在本地安装了Docker。dockerbuild-t你好:v1.0.0。运行上述命令构建Docker镜像后,我们就成功构建了Docker镜像。3.Docker部署我们已经构建好了Docker镜像,现在我们可以使用Docker来部署项目了。首先执行dockerimages命令查看镜像列表。dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEhellov1.0.08daaf829795611秒前11.7MB运行上面的命令,我们可以看到我们构建的Docker镜像,镜像名称为hello。然后,我们使用该图像来运行容器。dockerrun-d-p9090:8080hello:v1.0.074f75a374493f21caaf0f2e7f3d14698c3909446c78af6dc1172ac3f9052d839需要注意的是我们使用宿主机9090端口映射容器8080端口,其中参数-d用于运行后台程序参数-p用于映射端口。查看容器列表:dockerps-aCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES74f75a374493hello:v1.0.0"./hello"9secondsagoUp8seconds0.0.0.0:9090->8080/tcpdazzling_ramanujanexecutedockerps-acommand,我们可以查看容器列表。最后我们使用curl访问http://127.0.0.1:9090/hello,输出helloworld。#访问curlhttp://127.0.0.1:9090/hello#输出helloworld如果使用curl访问,可以正常输出helloworld,说明我们使用Docker成功部署了Go项目。我们可以使用dockerlogs命令来查看程序日志。dockerlogs-f742022/04/0905:09:08[info]runsuccess2022/04/0905:09:21[info]runsuccess2022/04/0905:09:21[info]runsuccess2022/04/0905:09:22[info]runsuccess我们可以使用dockerexec命令进入容器查看项目文件。dockerexec-it74/bin/sh/data/app#ls-altotal5948drwxr-xr-x1rootroot4096Apr905:07.drwxr-xr-x1rootroot4096Apr905:07..-rwxr-xr-x1rootroot6075093Apr904:12hellorwxrwxrwx1rootroot11Apr905:07service.log->/dev/stdout/data/app#4。Docker容器管理工具dockercompose使用Docker部署Go项目,我们需要先使用dockerbuild命令构建Docker镜像,然后使用dockerrun命令运行容器,一般在命令后需要一些参数,而且操作有点繁琐。我们可以使用Docker容器管理工具dockercompose来解决这个问题。不了解dockercompose的读者朋友请自行查阅相关资料。限于篇幅,本文不再赘述。我们主要介绍如何结合使用dockercompose和Dockerfile来管理容器和镜像。我们需要创建一个docker-compose.yml文件,我们在其中配置运行容器所需的命令和参数。docker-compose.ymlfile:version:'3.8'services:webapp:restart:always#Docker重启时,容器也重启build:#构建Docker镜像context:./#Dockerfile文件所在目录dockerfile:Dockerfile#Dockerfile文件名image:hello:1.0.0#镜像名和版本号container_name:hello#容器名ports:#宿主机和容器的映射端口-"9090:8080"写好docker-compose.yml后文件,我们可以使用docker-compose命令行工具来管理容器。#启动容器docker-composeup-d#查看容器列表docker-composeps#查看日志docker-compose-f#关闭容器docker-composestop#启动容器docker-composestart#重启容器docker-composerestart#关闭并删除容器docker-composedown需要注意的是,使用docker-compose命令行工具需要在docker-compose.yml文件的当前目录下执行。5.总结在本文中,我们介绍了如何使用Docker部署Go项目,并介绍了Docker容器管理工具dockercompose的简单使用。关于docker和dockercompose的更多介绍,有兴趣的读者可以自行查阅资料。使用Docker部署Go项目主要分为四步:交叉编译编写Dockfile文件构建镜像和运行容器