0

0

Golang如何安装并配置Docker开发环境

P粉602998670

P粉602998670

发布时间:2025-11-05 08:59:02

|

1000人浏览过

|

来源于php中文网

原创

首先安装Docker和Docker Compose,Linux用户通过APT安装并配置用户组,macOS和Windows用户使用Docker Desktop;接着在Golang项目中创建多阶段Dockerfile,基于golang:1.21-alpine构建并优化镜像体积,使用alpine运行二进制文件;然后编写docker-compose.yml统一管理应用及依赖服务如PostgreSQL;开发时可通过air实现热重载,并挂载本地代码卷提升迭代效率;最后建议规范go.mod和Docker上下文以确保构建一致性。

golang如何安装并配置docker开发环境

在Go语言(Golang)项目中使用Docker,能帮助你构建可移植、一致的开发与部署环境。以下是安装和配置适用于Golang项目的Docker开发环境的完整步骤。

安装Docker和Docker Compose

要开始,你需要在本地机器上安装Docker引擎和Docker Compose。

Linux(以Ubuntu为例):

  • 更新包索引:sudo apt update
  • 安装依赖:sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
  • 添加Docker官方GPG密钥:curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  • 添加仓库源:echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • 安装Docker:sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io
  • 安装Docker Compose:sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose
  • 将当前用户加入docker组避免使用sudo:sudo usermod -aG docker $USER(需重新登录)

macOS 和 Windows:

立即学习go语言免费学习笔记(深入)”;

编写Go项目的Dockerfile

在你的Golang项目根目录下创建名为 Dockerfile 的文件,内容如下示例:

拍我AI
拍我AI

AI视频生成平台PixVerse的国内版本

下载
# 使用官方Golang镜像作为基础镜像
FROM golang:1.21-alpine AS builder

# 设置工作目录 WORKDIR /app

# 拷贝go.mod和go.sum(如果存在)以利用缓存 COPY go.mod ./ COPY go.sum ./
RUN go mod download

# 拷贝源代码 COPY . .

# 构建二进制文件 RUN CGO_ENABLED=0 GOOS=linux go build -o main .

# 最终阶段:使用轻量级镜像运行 FROM alpine:latest RUN apk --no-cache add ca-certificates WORKDIR /root/

# 从构建阶段拷贝二进制文件 COPY --from=builder /app/main .

# 暴露端口(根据实际服务调整) EXPOSE 8080

# 启动命令 CMD ["./main"]

这个多阶段构建能有效减小最终镜像体积,并提升安全性。

使用docker-compose简化本地开发

如果你的Go服务依赖数据库或其他服务(如PostgreSQL、Redis),可以使用 docker-compose.yml 统一管理。

version: '3.8'
services:
  app:
    build: .
    ports:
      - "8080:8080"
    environment:
      - DB_HOST=db
      - DB_PORT=5432
    depends_on:
      - db

db: image: postgres:15 environment: POSTGRES_DB: myapp POSTGRES_USER: user POSTGRES_PASSWORD: password ports:

  • "5432:5432" volumes:
  • postgres_data:/var/lib/postgresql/data

volumes: postgres_data:

保存后,在项目目录运行:
docker-compose up --build
这会构建Go应用镜像并启动服务和数据库。

开发中的实用技巧

为了在开发时实现热重载或快速迭代,你可以结合 air 或挂载代码卷。

  • 在Dockerfile中添加air用于热重载(仅开发环境):
  • RUN go install github.com/cosmtrek/air@latest
  • 修改compose文件中app服务的command:
  • command: air -c .air.toml
  • 将本地代码挂载到容器中,实现修改即时生效:
  • volumes:
      - .:/app
      - /app/bin
      - /app/vendor
  • 注意:生产环境不要启用热重载或代码挂载

基本上就这些。通过以上步骤,你可以快速搭建一个适合Golang项目的Docker开发环境,便于团队协作和后续部署。不复杂但容易忽略的是权限和模块依赖的处理,建议每次构建前确认go.mod正确且Docker上下文不包含冗余文件。

相关专题

更多
golang如何定义变量
golang如何定义变量

golang定义变量的方法:1、声明变量并赋予初始值“var age int =值”;2、声明变量但不赋初始值“var age int”;3、使用短变量声明“age :=值”等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

180

2024.02.23

golang有哪些数据转换方法
golang有哪些数据转换方法

golang数据转换方法:1、类型转换操作符;2、类型断言;3、字符串和数字之间的转换;4、JSON序列化和反序列化;5、使用标准库进行数据转换;6、使用第三方库进行数据转换;7、自定义数据转换函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

228

2024.02.23

golang常用库有哪些
golang常用库有哪些

golang常用库有:1、标准库;2、字符串处理库;3、网络库;4、加密库;5、压缩库;6、xml和json解析库;7、日期和时间库;8、数据库操作库;9、文件操作库;10、图像处理库。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

340

2024.02.23

golang和python的区别是什么
golang和python的区别是什么

golang和python的区别是:1、golang是一种编译型语言,而python是一种解释型语言;2、golang天生支持并发编程,而python对并发与并行的支持相对较弱等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

209

2024.03.05

golang是免费的吗
golang是免费的吗

golang是免费的。golang是google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的开源编程语言,采用bsd开源协议。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

393

2024.05.21

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

197

2025.06.09

golang相关判断方法
golang相关判断方法

本专题整合了golang相关判断方法,想了解更详细的相关内容,请阅读下面的文章。

191

2025.06.10

golang数组使用方法
golang数组使用方法

本专题整合了golang数组用法,想了解更多的相关内容,请阅读专题下面的文章。

232

2025.06.17

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

9

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号