在以往部署 Java 项目时 , 有多种方式 .

  1. 打包 jar -> 上传服务器 -> 通过 Dockerfile 或者 docker compose 部署
  2. 打包 jar -> 推送容器镜像 -> 通过镜像部署

在 Golang 项目中也类似, 这里简单介绍下类似 1 的方式

Mac 端打包 , Linux 部署

1
CGO_ENABLED=0  GOOS=linux  GOARCH=amd64  go build main.go

Windows 打包 , Linux 部署

1
2
3
4
set CGO_ENABLED=0
set GOOS=linux
set GOARCH=amd64
go build

编写Dockerfile文件

1
2
3
4
5
6
7
8
9
10
11
12
# 本地交叉编译上传build文件后run
FROM golang:latest

WORKDIR /app
COPY . /app

EXPOSE 8000

ENV MY_ENV=abcd

CMD ./main

在linux系统中, 终端进入该文件夹,为避免执行二进制文件出现permission denied,赋予之最高权限, 再创建docker镜像

1
2
sudo chmod -R 777 .
docker build -t project .

后台运行docker镜像

1
docker run -d -p 8080:8080 --name project1 project