Files
EchoChat/backend/go-service/Dockerfile
2026-05-19 16:15:01 +08:00

49 lines
1.2 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ============================================================
# EchoChat Go 后端服务 Dockerfile
# 多阶段构建:编译阶段 → 运行阶段alpine 最小镜像)
# ============================================================
# --- 第一阶段:编译 ---
FROM golang:1.23-alpine AS builder
# 安装编译依赖CGO 需要 gcc
RUN apk add --no-cache gcc musl-dev
WORKDIR /build
# 先复制依赖文件利用 Docker 缓存层
COPY go.mod go.sum ./
RUN go mod download
# 复制全部源码并编译
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /build/echochat ./cmd/server
# --- 第二阶段:运行 ---
FROM alpine:3.19
# 安装运行时依赖(时区数据 + CA 证书 + 录制 WebM→MP4 转码所需 ffmpeg
RUN apk add --no-cache ca-certificates tzdata ffmpeg
# 设置时区为上海
ENV TZ=Asia/Shanghai
WORKDIR /app
# 从编译阶段复制二进制文件
COPY --from=builder /build/echochat .
# 复制配置文件目录
COPY --from=builder /build/config ./config
# 创建日志目录
RUN mkdir -p /app/logs
EXPOSE 8085
# 健康检查
HEALTHCHECK --interval=10s --timeout=3s --start-period=5s --retries=3 \
CMD wget -q -O /dev/null http://localhost:8085/health || exit 1
CMD ["./echochat"]