From 4023d446745e1926fad3d5c29079780501126e31 Mon Sep 17 00:00:00 2001 From: Martin Honermeyer Date: Sat, 2 Jan 2016 18:02:08 +0100 Subject: [PATCH] Use /drone/docker for the Docker daemon's graph directory This allows caching the whole Docker graph with the cache plugin. (Caching works efficiently with the overlay storage driver at least. Probably shouldn't be used with other storage drivers.) --- DOCS.md | 32 +++++++++++++++++++++++++++++--- main.go | 2 +- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/DOCS.md b/DOCS.md index 8c549d2..3049624 100644 --- a/DOCS.md +++ b/DOCS.md @@ -77,10 +77,36 @@ publish: build_args: - HTTP_PROXY=http://yourproxy.com ``` - -## Layer Caching -The Drone build environment is, by default, ephemeral meaning that you layers are not saved between builds. The below example combines Drone's caching feature and Docker's `save` and `load` capabilities to cache and restore image layers between builds: +## Caching + +The Drone build environment is, by default, ephemeral meaning that you layers are not saved between builds. There are two methods for caching layers. + +### Graph directory caching + +This is the preferred method when using the `overlay` storage driver. Just use Drone's caching feature to backup and restore the directory `/drone/docker`, as shown in the following example: + +```yaml +publish: + docker: + username: kevinbacon + password: pa55word + email: kevin.bacon@mail.com + repo: foo/bar + tag: + - latest + - "1.0.1" + +cache: + mount: + - /drone/docker +``` + +NOTE: This probably won't work correctly with the `btrfs` driver, and it will be very inefficient with the `devicemapper` driver. Please make sure to use the `overlay` storage driver with this method. + +### Layer Caching + +The below example combines Drone's caching feature and Docker's `save` and `load` capabilities to cache and restore image layers between builds: ```yaml publish: diff --git a/main.go b/main.go index 3e22df8..3abc89e 100644 --- a/main.go +++ b/main.go @@ -93,7 +93,7 @@ func main() { } go func() { - args := []string{"daemon"} + args := []string{"daemon", "-g", "/drone/docker"} if len(vargs.Storage) != 0 { args = append(args, "-s", vargs.Storage)