feat: 添加 Docker Hub 镜像支持
- 更新 Dockerfile 使用 Go 1.24 - 优化镜像大小(14.8MB) - 推送到 Docker Hub (ouaone/sms-receiver-go) - 更新 README.md 添加 Docker Hub 使用说明
This commit is contained in:
42
Dockerfile
42
Dockerfile
@@ -1,13 +1,13 @@
|
|||||||
# 构建阶段
|
# 构建阶段 - 使用多阶段构建减小镜像体积
|
||||||
FROM golang:1.21-alpine AS builder
|
FROM golang:1.24-alpine AS builder
|
||||||
|
|
||||||
# 安装构建依赖
|
# 安装构建依赖
|
||||||
RUN apk add --no-cache git gcc musl-dev
|
RUN apk add --no-cache git gcc musl-dev sqlite-dev
|
||||||
|
|
||||||
# 设置工作目录
|
# 设置工作目录
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# 复制 go.mod 和 go.sum
|
# 复制依赖文件
|
||||||
COPY go.mod go.sum ./
|
COPY go.mod go.sum ./
|
||||||
|
|
||||||
# 下载依赖
|
# 下载依赖
|
||||||
@@ -16,34 +16,44 @@ RUN go mod download
|
|||||||
# 复制源代码
|
# 复制源代码
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# 编译
|
# 编译 - 嵌入版本信息
|
||||||
RUN CGO_ENABLED=1 GOOS=linux go build -a -installsuffix cgo -ldflags="-w -s" -o sms-receiver main.go
|
ARG VERSION=v2.0.0
|
||||||
|
ARG BUILD_TIME=unknown
|
||||||
|
ARG GIT_COMMIT=unknown
|
||||||
|
|
||||||
# 运行阶段
|
RUN CGO_ENABLED=1 GOOS=linux go build \
|
||||||
FROM alpine:latest
|
-ldflags="-X 'main.Version=${VERSION}' -X 'main.BuildTime=${BUILD_TIME}' -X 'main.GitCommit=${GIT_COMMIT}' -X 'main.BuildEnv=docker' -w -s" \
|
||||||
|
-a -installsuffix cgo \
|
||||||
|
-o sms-receiver main.go
|
||||||
|
|
||||||
# 安装运行时依赖
|
# 运行阶段 - 使用最小化 Alpine 镜像
|
||||||
RUN apk --no-cache add ca-certificates sqlite tzdata
|
FROM alpine:3.19
|
||||||
|
|
||||||
# 设置时区(可选)
|
# 仅安装必需的运行时依赖
|
||||||
|
RUN apk --no-cache add \
|
||||||
|
ca-certificates \
|
||||||
|
tzdata \
|
||||||
|
sqlite-libs
|
||||||
|
|
||||||
|
# 设置时区
|
||||||
ENV TZ=Asia/Shanghai
|
ENV TZ=Asia/Shanghai
|
||||||
|
|
||||||
# 创建非 root 用户
|
# 创建非 root 用户(安全最佳实践)
|
||||||
RUN addgroup -g 1000 appuser && \
|
RUN addgroup -g 1000 appuser && \
|
||||||
adduser -D -u 1000 -G appuser appuser
|
adduser -D -u 1000 -G appuser appuser
|
||||||
|
|
||||||
# 设置工作目录
|
# 设置工作目录
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# 从构建阶段复制二进制文件
|
# 从构建阶段复制二进制文件和配置示例
|
||||||
COPY --from=builder /app/sms-receiver .
|
COPY --from=builder /app/sms-receiver .
|
||||||
COPY --from=builder /app/config.example.yaml config.yaml
|
COPY --from=builder /app/config.example.yaml config.yaml
|
||||||
|
|
||||||
# 创建数据目录
|
# 创建数据目录并设置权限
|
||||||
RUN mkdir -p /app/data && \
|
RUN mkdir -p /app/data /app/logs && \
|
||||||
chown -R appuser:appuser /app
|
chown -R appuser:appuser /app
|
||||||
|
|
||||||
# 切换用户
|
# 切换到非 root 用户
|
||||||
USER appuser
|
USER appuser
|
||||||
|
|
||||||
# 暴露端口
|
# 暴露端口
|
||||||
|
|||||||
20
README.md
20
README.md
@@ -121,6 +121,24 @@ make run
|
|||||||
|
|
||||||
### 方式 3: Docker 部署
|
### 方式 3: Docker 部署
|
||||||
|
|
||||||
|
**使用 Docker Hub 镜像(推荐)**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 拉取镜像
|
||||||
|
docker pull ouaone/sms-receiver-go:latest
|
||||||
|
|
||||||
|
# 运行容器
|
||||||
|
docker run -d \
|
||||||
|
--name sms-receiver-go \
|
||||||
|
-p 28001:28001 \
|
||||||
|
-v $(pwd)/config.yaml:/app/config.yaml:ro \
|
||||||
|
-v $(pwd)/data:/app/data \
|
||||||
|
--restart unless-stopped \
|
||||||
|
ouaone/sms-receiver-go:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
**从源码构建**:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 构建镜像
|
# 构建镜像
|
||||||
make docker-build
|
make docker-build
|
||||||
@@ -137,6 +155,8 @@ make docker-logs
|
|||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Docker Hub**: https://hub.docker.com/r/ouaone/sms-receiver-go
|
||||||
|
|
||||||
### 方式 4: 从源码编译
|
### 方式 4: 从源码编译
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
Reference in New Issue
Block a user