49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
# 使用官方 Go 镜像作为构建阶段
 | 
						|
FROM golang:1.22 AS builder
 | 
						|
 | 
						|
# 个别 go mod 依赖,换源获取。
 | 
						|
ENV GOPROXY=https://goproxy.cn,direct
 | 
						|
 | 
						|
WORKDIR /app
 | 
						|
 | 
						|
# 复制 go.mod 和 go.sum 文件
 | 
						|
COPY go.mod go.sum ./
 | 
						|
RUN go mod download
 | 
						|
 | 
						|
# 复制源代码并构建
 | 
						|
COPY . .
 | 
						|
 | 
						|
# 设置环境变量以确保静态编译
 | 
						|
ENV CGO_ENABLED=0 GOOS=linux GOARCH=amd64
 | 
						|
# 构建静态链接的二进制文件
 | 
						|
RUN go build -ldflags="-s -w" -a -o myapp .
 | 
						|
 | 
						|
# 使用轻量级的 Alpine 镜像作为最终镜像
 | 
						|
FROM alpine:latest
 | 
						|
 | 
						|
WORKDIR /root/
 | 
						|
 | 
						|
# 安装必要的运行时库(如果需要)
 | 
						|
# 对于完全静态的二进制文件,这一步可以省略
 | 
						|
# 但是为了保险起见,可以安装一些基本工具
 | 
						|
# RUN apk add --no-cache ca-certificates  # 这一步无权
 | 
						|
 | 
						|
# 复制构建好的二进制文件
 | 
						|
COPY --from=builder /app/myapp .
 | 
						|
 | 
						|
# 需要的文件夹
 | 
						|
COPY ./config ./config
 | 
						|
RUN mkdir -p store/logs && mkdir -p public
 | 
						|
 | 
						|
# 确保二进制文件具有可执行权限
 | 
						|
RUN chmod +x myapp
 | 
						|
 | 
						|
# 暴露 端口
 | 
						|
EXPOSE 20201
 | 
						|
 | 
						|
# 运行应用
 | 
						|
CMD ["./myapp"]
 | 
						|
 | 
						|
# TEST 挂起效果,测试用
 | 
						|
# CMD ["tail", "-f", "/dev/null"]
 |