怎样将服务部署到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 .
此时项目目录下会多出一个文件:
使用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在同一目录下:
打包镜像
docker build -t yiyu/worker .
//出现一下提示说明构建成功
......
Successfully built 10669803cb30
Successfully tagged yiyu/worker:latest
- -t : 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签
- yiyu/worker即是我们镜像仓库的名称
查看镜像是否构建成功:
docker images
启动服务
docker run -i -d --name=yiyuworker -p 8081:8081 yiyu/worker
- yiyuworker是镜像服务名称
- 8081为对外暴漏端口号
查看服务是否启动成功
完成。
服务测试
yiyuworker的PROTS是0.0.0.0:8081
说明在进行访问时应该输入Linux的IP地址,使用 ip addr 查看IP地址,我的是192.168.10.100
postman测试
成功返回示例
失败返回示例:
测试成功。