Docker images related properties.

- a property to pull image from standard Docker Hub registry.
- a property to build image from a local directory (with a Dockerfile).
This commit is contained in:
Antoine Eiche 2015-05-11 00:00:00 +02:00 committed by Joey Hess
parent 3790a65dd5
commit c83c68115f
1 changed files with 18 additions and 0 deletions

View File

@ -11,6 +11,8 @@ module Propellor.Property.Docker (
configured,
container,
docked,
imageBuilt,
imagePulled,
memoryLimited,
garbageCollected,
tweaked,
@ -43,6 +45,7 @@ import Propellor.Types.Docker
import Propellor.Types.CmdLine
import qualified Propellor.Property.File as File
import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Property.Cmd as Cmd
import qualified Propellor.Shim as Shim
import Utility.SafeCommand
import Utility.Path
@ -138,6 +141,21 @@ docked ctr@(Container _ h) =
]
]
-- | Build the image from a directory containing a Dockerfile.
imageBuilt :: FilePath -> Image -> Property NoInfo
imageBuilt directory image = describe built msg
where
msg = "docker image " ++ image ++ " built from " ++ directory
built = Cmd.cmdProperty' dockercmd ["build", "--tag", image, "./"] workDir
workDir p = p { cwd = Just directory }
-- | Pull the image from the standard Docker Hub registry.
imagePulled :: Image -> Property NoInfo
imagePulled image = describe pulled msg
where
msg = "docker image " ++ image ++ " pulled"
pulled = Cmd.cmdProperty dockercmd ["pull", image]
propigateContainerInfo :: (IsProp (Property i)) => Container -> Property i -> Property HasInfo
propigateContainerInfo ctr@(Container _ h) p = propigateContainer ctr p'
where