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, configured,
container, container,
docked, docked,
imageBuilt,
imagePulled,
memoryLimited, memoryLimited,
garbageCollected, garbageCollected,
tweaked, tweaked,
@ -43,6 +45,7 @@ import Propellor.Types.Docker
import Propellor.Types.CmdLine import Propellor.Types.CmdLine
import qualified Propellor.Property.File as File import qualified Propellor.Property.File as File
import qualified Propellor.Property.Apt as Apt import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Property.Cmd as Cmd
import qualified Propellor.Shim as Shim import qualified Propellor.Shim as Shim
import Utility.SafeCommand import Utility.SafeCommand
import Utility.Path 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 :: (IsProp (Property i)) => Container -> Property i -> Property HasInfo
propigateContainerInfo ctr@(Container _ h) p = propigateContainer ctr p' propigateContainerInfo ctr@(Container _ h) p = propigateContainer ctr p'
where where