部署前提:

  1. 宿主机已经安装好了 go 配置环境 因为 我是linux 编译的golang代码 不是 已经编译好的二进制部署的
  2. 宿主机已经安装好了docker

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

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"]

接下来 打包镜像
在目录/home/www/goWebBlog下 执行下面的命令
记得下面这个点 . 有个空格 它会自动 寻找一个名为Dockerfile 的文件
当然给容器起名字可以随意 如果你的容器 需要上传到 dockerhub 也就是公有云
必须填写自己的账户名 自己去dockerhub注册账号

docker build -t  (建议写你的dockerhub的账户名)/(这里容器的名字) .

接着在容器跑这个项目

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

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

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