已经更新到第十三期了,基本知识点讲解的差不多了,最后一步就是部署项目了。在这里,我们将项目部署到Linux服务器Docker。本期知识点包括交叉编译和Docker部署。
打开我们的项目根目录,打开终端,设置GOOS和GOARCH。
编译成windows下的linux程序。
setcgo _ enabled=0 setgoos=linuxsetgoarch=amd64 gobuild-oout/Linux/gin _ hello。这里的gobuild-oout/linux/gin_hello指的是将编译后的文件输出到out/linux,编译后的二进制名为gin_hello。
我把命令写在了。蝙蝠便于处理,这样我就不用每次都贴这些线了。
在项目根目录下创建一个新的build.bat,然后执行该文件。当然,很多工程或者项目都是用Makefile编译的。
setcgo _ enabled=0 setgoos=linuxsetgoarch=amd 64 gobuild-oout/linux/gin_hello . exit文件执行后,gin _ hello会出现在out/Linux下。
这里我们完成了交叉编译,编译后的程序是linux下的可执行文件。
sudoyum-config-manager \-add-repo \ https://download.docker.com/Linux/centos/docker-ce.repo再次更新软件源码sudoyumupdate,最后我们就可以安装我们的Docker了。
Sudoyuminstalldocker-ce添加到启动
SudosystemctlenableDocker启动Docker。
Sudosystemctlstartdocker此时,我们的docker已经安装好了。但是我们还需要为我们的Docker设置一个远程连接,以便我们的本地开发人员可以连接到服务器。
警告:以下方法仅用于教程演示。请不要在生产环境中使用这种方法。这种方法存在缺陷,使得Docker端口暴露在公网环境中,任何人都可以在Docker中部署。如果需要在生产环境下打开远程端口,需要配置权限认证方式,这里我就不介绍了。
在Centos7中,编辑以下文件。
vim/usr/lib/systemd/system/docker . service找到ExecStart开头的那个,添加修改如下。
execstart=/usr/bin/Docker-htcp ://0 . 0 . 0:2375-hunix 3360//var/run/Docker . sock-HFD :/-container d=/run/container d . sock。
确认可以找到MySQL后,就可以完成MySQL的拉取了,通过dockerpullmysql命令拉取MySQL镜像。暂时不指定MySQL版本,会为我们拉最新的MySQL版本。
拉完之后,通过dockeriamges查看当前所有的图像。我们这里只有一个MySQL。
我已经获得了MySQL映像,所以下一步是通过映像创建容器。
docker Run-p 330633603306-name MySQL-e MySQL _ root _ password=1234-dmy SQL此时我们的MySQL容器已经成功创建并启动,我们做了MySQL密码1234和端口3306。
我们为mysql指定一个终端来创建数据库。
输入mysql-uroot-p,输入密码1234进入数据库。输入createdatabaseginhello与我们本地数据库的名称一致。
这样,我们在服务器上的操作就完成了。
gin.SetMode(gin.ReleaseMode)
此时就可以执行我们的交叉编译时候写的脚本build.bat,会生成新的linux可执行文件。
新建Dockerfile,编写Dockerfile
FROMalpineWORKDIR/web/ginCOPY./out/linux/..CMD./gin_hello
简单的说一下这些含义,拉取一个alpine的镜像,这基本是最小的linux,指定我们的WORKDIR,将我们生成的linux可执行程序复制到WORKDIR下,运行项目。
当然这些还不够,当我们编写完成该文件的时候,在第一行会出现运行按钮。
单击运行按钮,选择Edit'Dockerfile'
会出现下面的界面。点击①处的省略号,出现旁边的界面,进行Docker的配置,在②处填写我们的IP端口为2375设置完成后,等待,看看③处是否有Connectionsuccessful。否者链接失败,查看上述步骤是否出错。完成后点击OK。
完成Docker的配置,接着完成端口映射。
Hostport表示宿主主机端口,就是我们的服务器端口,而Containerport表示我们的容器的端口。因为gin项目运行在容器内,且启动端口为8080,我们通过端口映射,访问宿主主机80端口,而映射到8080端口。
完成上述设置,就可以点击启动我们的Dockerfile。
我们可以在Goland的Service中找到当前进度。
等待完成,打开服务器公网IP。
可以看到我们之前写的代码。
此时我们就完成了部署。
通过本章节的交叉编译,Docker安装,Docker镜像安装和启动容器,部署Gin项目,完成了一个项目通过Docker上线部署的过程。
本章节代码可以使用之前任何一个章节代码,但是这里还是进行了代码的上传,包含本章节使用的Dockerfile和build.bat
Github