目前公司的项目结构大致如下:
project
├── Makefile
├── README.md
├── apps
│ ├── app1
│ ├── app2
│ ├── app3
│ ├── app4
│ ├── app5
│ └── app6
├── conf
├── config
├── mods
├── db
├── docker-compose.dev.yml
├── docker-compose.yml
├── go.mod
├── go.sum
├── helper
├── message
└── utils
多个 app 共用一个 go.mod 管理,也共享外面的公共类库。
每个 app 目录下只包含一个简单 main 函数启动服务,大部分的业务逻辑都写在 mods 目录下的对应的模块 package 下,每个模块 package 可能会被多个 app 导入。
整个项目需要所有的 app 服务都启动,目前我是用 docker-compose 把每个 app 都单独打入一个镜像编译并运行。 每个镜像我都把整个项目 COPY 进去编译,只忽略了 apps 目录。
现在问题是,当我修改 mods 或其他共享 package 的代码时,再 docker-compose build 会导致所有镜像都从 COPY 开始缓存失效,导致所有 app 都重新编译,不管我修改的地方有没有被这个 app 引入。
一个很小的改动都需要十几分钟才能看效果,真是太难受了。。。
不知道大家都是怎么搭建本地开发环境的?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.