# 创建 Go 项目
# 创建项目目录
mkdir -p /go/src/myapp && cd /go/src/myapp |
# 创建 main.go 文件
package main | |
import "fmt" | |
func main() { | |
fmt.Println("Hello, World!") | |
} |
# 编写 Dockerfile
创建 Dockerfile 文件
cd /go && vi Dockerfile |
内容如下:
# 使用 Go 1.20 版本和 Alpine Linux 作为基础镜像 | |
FROM golang:1.20-alpine | |
# 设置 Go 环境变量 | |
ENV GO111MODULE=on \ | |
CGO_ENABLED=0 \ | |
GOROOT=/usr/local/go \ | |
GOPATH=/go \ | |
GOBIN=/go/bin \ | |
PATH=/go/bin:$PATH | |
# 创建 Go 的工作目录 | |
RUN mkdir -p "$GOPATH/src" "$GOBIN" && chmod -R 777 "$GOPATH" | |
# 设置容器的工作目录 | |
WORKDIR /go | |
# 可选:安装一些基本工具 | |
RUN apk update && apk upgrade && \ | |
apk add --no-cache git bash curl | |
# 可选:复制本地 Go 代码到容器内 | |
# COPY ./src /go/src | |
# 可选:构建 Go 程序 | |
# RUN go build -o /go/bin/myapp /go/src/myapp/main.go | |
# 容器启动时运行的命令 | |
# 容器启动时运行的命令(应根据实际情况修改) | |
# 假设构建好的 Go 程序名为 myapp,并且已经通过之前的步骤复制到 /go/bin 目录下 | |
# CMD ["/go/bin/myapp"] | |
CMD ["/bin/sh"] |
# 构建镜像
自定义镜像名称 如 gotest
docker build -t gotest . |
通过 docker images 命令查看镜像是否成功构建
# 运行容器
docker run -d -v /go:/go -it gotest /bin/sh
# 额外内容
快速启动一个 golang 容器
docker run -d -v /go:/go -it golang:1.20-alpine /bin/sh |