catface_backend_go/Dockerfile

50 lines
1.1 KiB
Docker
Raw Normal View History

2025-04-04 09:57:40 +08:00
# 使用官方 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 -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"]