先编写Go Web服务并创建Dockerfile进行多阶段构建,再通过%ignore_a_1%-compose.yml定义服务端口映射与环境变量,最后用docker-compose up启动容器,实现Golang服务在Docker中的快速部署与验证。

用Golang在Docker Compose中搭建服务,核心是将Go应用容器化,并通过docker-compose.yml定义服务依赖和运行环境。整个过程不复杂,关键在于正确配置构建、网络和端口映射。
编写简单的Golang Web服务
先准备一个基础的HTTP服务,监听某个端口,返回简单响应。
package mainimport ("fmt""net/http")
func handler(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "Hello from Go service!")}
func main() {http.HandleFunc("/", handler)fmt.Println("Server is starting on :8080")http.ListenAndServe(":8080", nil)}
这个服务监听8080端口,访问根路径会返回一句话。
创建Dockerfile容器化Go应用
在项目根目录创建Dockerfile,使用多阶段构建减小镜像体积。
立即学习“go语言免费学习笔记(深入)”;
# 构建阶段FROM golang:1.21 AS builderWORKDIR /appCOPY . .RUN go mod tidyRUN go build -o main .运行阶段
FROM alpine:latestRUN apk --no-cache add ca-certificatesWORKDIR /root/COPY --from=builder /app/main .CMD ["./main"]
第一阶段编译二进制,第二阶段使用轻量Alpine运行,提升安全性与启动速度。
编写docker-compose.yml定义服务
创建docker-compose.yml文件,定义Go服务的构建和运行参数。
version: '3.8'services:go-service:build: .ports:
- "8080:8080"environment:
- ENV=development
说明:
build: . 表示基于当前目录的Dockerfile构建镜像ports 将主机8080映射到容器8080environment 可传入环境变量,供程序读取
如果服务依赖数据库或其他组件,可以继续在services下添加mysql、redis等。
启动和验证服务
确保安装了Docker和Docker Compose后,执行:
docker-compose up --build
首次加--build确保镜像重新构建。看到输出Server is starting on :8080表示成功启动。
打开浏览器或用curl访问:http://localhost:8080,应看到返回内容。
停止服务按 Ctrl+C,或后台运行加-d参数:
docker-compose up -d
基本上就这些。只要Go服务能正常运行,Dockerfile正确打包,再通过Compose编排,就能快速搭建本地开发环境。后续可加入日志、网络、健康检查等增强配置。
以上就是如何使用Golang在Docker Compose中搭建服务的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1416108.html
微信扫一扫
支付宝扫一扫