部署前提:
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是指跟宿主机通信