部署前提:

 1. 宿主机已经安装好了 go 配置环境  因为 我是linux 编译的golang代码 不是 已经编译好的二进制部署的
 2. 当然 你也可以 直接二进制打包到docker里部署 其步骤差不多是一样的
 3. 宿主机已经安装好了docker

下面是 Dockerfile 的配置:
Dockerfile 放在 你golang项目的根目录
就像这样
在这里插入图片描述

Dockerfile 代码:

FROM golang:alpine

# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64 \
	GOPROXY="https://goproxy.cn,direct"
	
# 移动到工作目录:/home/www/goWebBlog 这个目录 是你项目代码 放在linux上  
# 这是我的代码跟目录 
# 你们得修改成自己的
WORKDIR /home/www/goWebBlog

# 将代码复制到容器中
COPY . .

# 将我们的代码编译成二进制可执行文件  可执行文件名为 app
RUN go build -o app .

# 移动到用于存放生成的二进制文件的 /dist 目录
WORKDIR /dist

# 将二进制文件从 /home/www/goWebBlog 目录复制到这里
RUN cp /home/www/goWebBlog/app .
# 在容器目录 /dist 创建一个目录 为src
RUN mkdir src .
# 在容器目录 把宿主机的静态资源文件 拷贝到 容器/dist/src目录下
# 这个步骤可以略  因为项目是引用到了 外部静态资源
RUN cp -r /home/www/goWebBlog/src/static ./src/
# 声明服务端口
EXPOSE 9090

# 启动容器时运行的命令
CMD ["/dist/app"]
  • Dockerfile 写好了以后 记得 放在项目的 根目录 说白了 就跟 main.go 入口 同级 上面有截图
  • 接下来 打包镜像
  • 在目录/home/www/goWebBlog下 执行下面的命令
  • 记得下面这个点 . 有个空格 它会自动 寻找一个名为Dockerfile 的文件
  • 当然给容器起名字可以随意 如果你的容器 需要上传到 dockerhub 也就是公有云
  • 则必须填写自己的账户名 自己去dockerhub注册账号
docker build -t  (建议写你的dockerhub的账户名)/(这里容器的名字) .

接着在容器跑这个项目

docker run -itd -p 9090:9090 (你上面填写的dockerhub的账户名)/(这里容器的名字)

这里是在容器跑这个项目的一些参数建议
–name 这个会在docker container 的 name 取你填写的名字
如果不给 那么docker container 会随机取一个名字

-d后台运行
-p 指定端口号
-memory给容器指定内存大小
--cpu-shares int  指定cpu核心  
--name 给这个continer起个名字
--network none 指定容器网络状态 这里none是指 跟外界网络根本不通  host是指跟宿主机通信
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐