docker-compose.yml 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. # Docker Compose 配置文件
  2. # 参考文档: https://docs.docker.com/compose/compose-file/05-services/
  3. services:
  4. # ==================== 开发环境服务 ====================
  5. # Go 语言开发容器 - 用于代码编写、编译和调试
  6. # 镜像参考: https://hub.docker.com/_/golang#shared-tags
  7. go_kit:
  8. # 使用官方 Go 1.26.2 镜像,包含完整的 Go 开发工具链
  9. image: golang:1.26.2
  10. # 端口映射: 将容器 22 端口映射到宿主机随机可用端口
  11. ports:
  12. - 0:22
  13. # 保持容器持续运行,便于 VS Code Dev Containers 连接
  14. # sleep infinity 让容器无限期休眠,避免自动退出
  15. command: sleep infinity
  16. # 设置容器内的工作目录,所有命令在此目录下执行
  17. working_dir: /workspace
  18. # 卷挂载配置
  19. volumes:
  20. # 持久化 bash 历史记录,方便命令历史检索
  21. - dev-bash-history:/root/.bash_history
  22. # 挂载本地 SSH 密钥,用于 Git 操作和远程连接
  23. - ~/.ssh:/root/.ssh
  24. # 将当前项目目录挂载到容器工作目录,实现代码实时同步
  25. - .:/workspace
  26. # 持久化 Go 模块缓存,加速依赖下载和构建
  27. - go:/go
  28. # ==================== 数据库服务 ====================
  29. # MySQL 8.0 数据库 - 用于应用数据存储
  30. # 镜像参考: https://hub.docker.com/_/mysql
  31. mysql:
  32. # 使用 MySQL 8.0 Bookworm 版本,基于 Debian 12
  33. image: mysql:8.0-bookworm
  34. # 端口映射: 将容器 3306 端口映射到宿主机随机可用端口
  35. ports:
  36. - 0:3306
  37. # 自动重启策略: 除非手动停止,否则自动重启
  38. # 确保数据库服务在异常退出后能够自动恢复
  39. restart: unless-stopped
  40. # 环境变量配置: 设置 MySQL 根密码
  41. environment:
  42. MYSQL_ROOT_PASSWORD: root
  43. # 启动命令: 设置 MySQL 认证插件为 mysql_native_password
  44. # 兼容旧版应用的认证机制,避免连接问题
  45. command: --default-authentication-plugin=mysql_native_password
  46. # ==================== 缓存服务 ====================
  47. # Redis 缓存服务 - 用于会话存储和缓存数据
  48. # 镜像参考: https://hub.docker.com/_/redis
  49. redis:
  50. # 默认密码为空,生产环境请设置密码
  51. # 使用 Redis 8.2.5 Bookworm 版本
  52. image: redis:8.2.5-bookworm
  53. # 端口映射: 将容器 6379 端口映射到宿主机随机可用端口
  54. ports:
  55. - 0:6379
  56. # 自动重启策略: 除非手动停止,否则自动重启
  57. # 确保 Redis 缓存服务在异常退出后能够自动恢复
  58. restart: unless-stopped
  59. # ==================== 持久化卷定义 ====================
  60. volumes:
  61. # 开发环境 bash 历史记录持久化卷
  62. # 确保重启容器后命令历史不会丢失
  63. dev-bash-history:
  64. # Go 模块缓存持久化卷
  65. # 加速依赖下载,避免重复下载第三方包
  66. go: