怎样将服务部署到Docker

如果我们在Windows上写的项目而又需要在Linux上部署,需要先将项目编译成可以在Linux上执行的项目。

Golang支持交叉编译,在一个平台上生成另一个平台的可执行程序。

交叉编译

Windows 下编译 Linux 64 位可执行程序
在项目所在根目录下执行:

GOOS:目标平台的操作系统(darwin、freebsd、linux、windows)

set GOOS=linux

GOARCH:目标平台的体系架构(386、amd64、arm)

set GOARCH=amd64

编译:

go build .

此时项目目录下会多出一个文件:

0.png

使用Xftp将文件移植到Linux系统上

打包镜像

在编写Dockerfile和打包镜像之前,需要修改workerservice文件权限(可以以后再修改)

chmod +x workerservice

编写Dockerfile:

FROM golang:latest
MAINTAINER zshhhca "zhaohengheng@outlook.com"
WORKDIR /home/zhaoh/goproject2
ADD workerservice /home/zhaoh/goproject2
ENTRYPOINT ["/home/zhaoh/goproject2/workerservice"]
  • FROM:为后面的指令设置基础镜像。一个有效的Dockerfile文件必须以FROM作为第一条非注释指令
  • MAINTAINER:设置生成的镜像的Author字段
  • WORKDIR:指定工作目录
  • ADD:复制新文件、目录或远程文件URL并添加他们到容器的文件系统路径
  • ENTRYPOINT:ENTRYPOINT允许配置容器作为可执行文件运行

Dockerfile和workerservice在同一目录下:

1.jpg

打包镜像

docker build -t yiyu/worker .

//出现一下提示说明构建成功
......
Successfully built 10669803cb30
Successfully tagged yiyu/worker:latest
  • -t : 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签
  • yiyu/worker即是我们镜像仓库的名称

查看镜像是否构建成功:

docker images

2.png

启动服务

docker run -i -d --name=yiyuworker -p 8081:8081 yiyu/worker
  • yiyuworker是镜像服务名称
  • 8081为对外暴漏端口号

查看服务是否启动成功

3.png

完成。

服务测试

yiyuworker的PROTS是0.0.0.0:8081

4.png

说明在进行访问时应该输入Linux的IP地址,使用 ip addr 查看IP地址,我的是192.168.10.100

postman测试

成功返回示例

5.png

6.jpg

失败返回示例:

7.png

8.png

测试成功。

Last modification:November 10th, 2019 at 10:49 am
如果觉得我的文章对你有用,请随意赞赏