- Notifications
You must be signed in to change notification settings - Fork965
Commit29bf8bf
authored
Optimize Docker build with bind mounts (#208)
* Optimize Docker build with bind mountsThis commit further optimize the Docker builds on top of PR#92 with:1. Add .dockerignore file to exclude non-source code files [1].2. Use Alpine image variant for build stage to reduce download size. golang:1.23.7-alpine is 200 MB smaller than golang:1.23.7 [2][3].3. Replace COPY instruction with RUN --mount=type=bind. Bind mounts do not add unnecessary layers to the cache [4][5].[1]:https://docs.docker.com/build-cloud/optimization/#dockerignore-files[2]:https://hub.docker.com/layers/library/golang/1.23.7-alpine/images/sha256-333d4ba78773b3a3ae9cf2cff8962df56effc5c9481faa355f211abf2baf175c[3]:https://hub.docker.com/layers/library/golang/1.23.7/images/sha256-2087a99c3235972660b3d35c1564d9d1a3f639dcace9c790acbabc7e938d1570[4]:https://docs.docker.com/build/building/best-practices/#add-or-copy[5]:https://docs.docker.com/build/cache/optimize/#use-bind-mountsSigned-off-by: Eng Zer Jun <engzerjun@gmail.com>* Remove `go mod download` step`go build` will automatically download module dependencies. In manycases, that is a much smaller set of modules than what is downloaded by`go mod download`.Size of GOMODCACHE with `go mod download:$ go clean -i -r -cache -modcache$ go mod download$ du -sh ~/go/pkg/mod186M/home/jun/go/pkg/modSize of GOMODCACHE with `go build`:$ go clean -i -r -cache -modcache$ CGO_ENABLED=0 go build -ldflags="-s -w" cmd/github-mcp-server/main.gogo: downloading github.com/spf13/viper v1.20.1go: downloading github.com/mark3labs/mcp-go v0.18.0go: downloading github.com/google/go-github/v69 v69.2.0go: downloading github.com/sirupsen/logrus v1.9.3go: downloading github.com/spf13/cobra v1.9.1go: downloading golang.org/x/sys v0.31.0go: downloading github.com/spf13/afero v1.14.0go: downloading github.com/fsnotify/fsnotify v1.8.0go: downloading github.com/spf13/cast v1.7.1go: downloading github.com/go-viper/mapstructure/v2 v2.2.1go: downloading github.com/subosito/gotenv v1.6.0go: downloading gopkg.in/yaml.v3 v3.0.1go: downloading github.com/spf13/pflag v1.0.6go: downloading github.com/pelletier/go-toml/v2 v2.2.3go: downloading github.com/sagikazarmark/locafero v0.9.0go: downloading golang.org/x/text v0.23.0go: downloading github.com/google/uuid v1.6.0go: downloading github.com/yosida95/uritemplate/v3 v3.0.2go: downloading github.com/sourcegraph/conc v0.3.0go: downloading github.com/google/go-querystring v1.1.0$ du -sh ~/go/pkg/mod80M/home/jun/go/pkg/modReference:https://stackoverflow.com/a/68172023/7902371Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>1 parent0ca07aa commit29bf8bf
2 files changed
+22
-12
lines changedLines changed: 11 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + |
Lines changed: 11 additions & 12 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
| 1 | + | |
1 | 2 |
| |
2 | 3 |
| |
3 |
| - | |
4 |
| - | |
5 |
| - | |
6 | 4 |
| |
7 | 5 |
| |
8 | 6 |
| |
9 |
| - | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
10 | 10 |
| |
11 |
| - | |
12 |
| - | |
13 |
| - | |
14 |
| - | |
15 |
| - | |
16 | 11 |
| |
17 |
| - | |
18 |
| - | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
19 | 18 |
| |
20 | 19 |
| |
21 | 20 |
| |
22 | 21 |
| |
23 | 22 |
| |
24 | 23 |
| |
25 |
| - | |
| 24 | + | |
26 | 25 |
| |
27 | 26 |
|
0 commit comments
Comments
(0)