Golang服务器自动重编译与自动重启的Docker镜像(基于1.13.3版本)
Golang服务器自动重编译与自动重启的Docker镜像(基于1.13.3版本)
- 已更新至 Golang 1.13.3
- 已开始对镜像进行标记以支持版本管理
- 如果您喜欢它,请在 GitHub 和 Docker Hub 上为其加星
acim/go-reflex
用于自动重新编译和自动重启 Golang 服务器的 Docker 镜像 - acim/go-reflex
更多关于Golang服务器自动重编译与自动重启的Docker镜像(基于1.13.3版本)的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于Golang服务器自动重编译与自动重启的Docker镜像(基于1.13.3版本)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这是一个非常实用的Docker镜像项目,专门为Golang开发环境提供了自动重编译和重启功能。基于Golang 1.13.3版本,这个镜像通过集成reflex工具实现了文件监控和自动构建。
核心功能实现
这个镜像的核心是利用reflex监控文件变化并触发重新编译。以下是典型的Dockerfile实现:
FROM golang:1.13.3-alpine
# 安装 reflex 工具
RUN go install github.com/cespare/reflex@latest
# 设置工作目录
WORKDIR /app
# 复制go.mod和go.sum(如果存在)
COPY go.mod go.sum ./
RUN go mod download
# 复制源代码
COPY . .
# 设置默认的reflex命令
CMD ["reflex", "-r", "\\.go$", "-s", "--", "go", "run", "main.go"]
使用示例
1. 基本使用
# 拉取镜像
docker pull acim/go-reflex:1.13.3
# 运行容器
docker run -it --rm \
-v $(pwd):/app \
-p 8080:8080 \
acim/go-reflex:1.13.3
2. 自定义监控配置
# 使用自定义reflex配置
docker run -it --rm \
-v $(pwd):/app \
-p 8080:8080 \
acim/go-reflex:1.13.3 \
reflex -r '\.(go|html)$' -s -- sh -c 'go build -o app && ./app'
3. Docker Compose配置
version: '3.8'
services:
go-dev:
image: acim/go-reflex:1.13.3
ports:
- "8080:8080"
volumes:
- ./:/app
environment:
- GO111MODULE=on
command: reflex -r '\.go$' -s -- go run main.go
高级监控配置
如果需要更复杂的监控逻辑,可以创建.reflex.conf配置文件:
# .reflex.conf
patterns:
- regex: \.go$
command: go build -o app && ./app
delay: 100ms
- regex: \.(html|css|js)$
command: echo "Frontend file changed"
delay: 200ms
然后在Docker中使用:
docker run -it --rm \
-v $(pwd):/app \
-v $(pwd)/.reflex.conf:/app/.reflex.conf \
acim/go-reflex:1.13.3 \
reflex -c .reflex.conf
性能优化建议
对于大型项目,可以启用增量构建:
# 使用go install进行增量构建
docker run -it --rm \
-v $(pwd):/app \
acim/go-reflex:1.13.3 \
reflex -r '\.go$' -s -- sh -c 'go install ./... && app'
这个镜像特别适合需要快速迭代的Golang API服务开发,通过容器化的开发环境确保了一致性,同时提供了实时的代码重载功能。

