on master help sign in
Updates docs and examples
commit6dbf176f5b087dc883f040d5c3e2e1d8ff918390 authorDeni Bertovic <deni@denibertovic.com> dateMon 20 Mar 2017, 11:05 (10 years ago) parent24070a0
2 files changed+63−47
examples/Example.hs+52−43 src/Docker/Client.hs+11−4
examples/Example.hs+52−43
@@ -1,55 +1,64 @@
11import Docker.Client
22
33runNginxContainer :: IO ContainerID
4−runNginxContainer = runDockerT (defaultClientOpts, defaultHttpHandler) $ do
5− let pb = PortBinding 80 TCP [HostPort "0.0.0.0" 8000]
6− let myCreateOpts = addPortBinding pb $ defaultCreateOpts "nginx:latest"
7− cid <- createContainer myCreateOpts (Just "myNginxContainer")
8− case cid of
9− Left err -> error $ show err
10− Right i -> do
11− _ <- startContainer defaultStartOpts i
12− return i
4+runNginxContainer = do
5+ h <- defaultHttpHandler
6+ runDockerT (defaultClientOpts, h) $
7+ do let pb = PortBinding 80 TCP [HostPort "0.0.0.0" 8000]
8+ let myCreateOpts = addPortBinding pb $ defaultCreateOpts "nginx:latest"
9+ cid <- createContainer myCreateOpts (Just "myNginxContainer")
10+ case cid of
11+ Left err -> error $ show err
12+ Right i -> do
13+ _ <- startContainer defaultStartOpts i
14+ return i
1315
1416stopNginxContainer :: ContainerID -> IO ()
15−stopNginxContainer cid = runDockerT (defaultClientOpts, defaultHttpHandler) $ do
16− r <- stopContainer DefaultTimeout cid
17− case r of
18− Left _ -> error "I failed to stop the container"
19− Right _ -> return ()
17+stopNginxContainer cid = do
18+ h <- defaultHttpHandler
19+ runDockerT (defaultClientOpts, h) $
20+ do r <- stopContainer DefaultTimeout cid
21+ case r of
22+ Left _ -> error "I failed to stop the container"
23+ Right _ -> return ()
2024
2125runPostgresContainer :: IO ContainerID
22−runPostgresContainer = runDockerT (defaultClientOpts, defaultHttpHandler) $ do
23− let pb = PortBinding 5432 TCP [HostPort "0.0.0.0" 5432]
24− let b = Bind "/tmp" "/tmp" Nothing
25− let myCreateOpts = addBind b $ addPortBinding pb $ defaultCreateOpts "postgres:9.5"
26− cid <- createContainer myCreateOpts Nothing
27− case cid of
28− Left err -> error $ show err
29− Right i -> do
30− _ <- startContainer defaultStartOpts i
31− return i
26+runPostgresContainer = do
27+ h <- defaultHttpHandler
28+ runDockerT (defaultClientOpts, h) $
29+ do let pb = PortBinding 5432 TCP [HostPort "0.0.0.0" 5432]
30+ let b = Bind "/tmp" "/tmp" Nothing
31+ let myCreateOpts = addBind b $ addPortBinding pb $ defaultCreateOpts "postgres:9.5"
32+ cid <- createContainer myCreateOpts Nothing
33+ case cid of
34+ Left err -> error $ show err
35+ Right i -> do
36+ _ <- startContainer defaultStartOpts i
37+ return i
3238
3339-- | Example of how we can start a database container while hosting it's
3440-- data in a data volume living inside another container.
3541runPostgresWithDataContainer :: IO ContainerID
36−runPostgresWithDataContainer = runDockerT (defaultClientOpts, defaultHttpHandler) $ do
37− -- We use a dummy command like /bin/true because we don't want to start
38− -- the postgres database in the data container we just want it to
39− -- create a container filesystem for us.
40− let dataOpts = setCmd "/bin/true" $ defaultCreateOpts "postgres:9.5"
41− cid <- createContainer dataOpts (Just "myDataContainer")
42− _ <- case cid of
43− Left err -> error $ show err
44− Right i -> startContainer defaultStartOpts i
45− let pb = PortBinding 5432 TCP [HostPort "0.0.0.0" 5432]
46− -- Default permission is read-write if we don't specify anything
47− let vf = VolumeFrom "myDataContainer" Nothing
48− let myCreateOpts = addVolumeFrom vf $ addPortBinding pb $ defaultCreateOpts "postgres:9.5"
49− ccid <- createContainer myCreateOpts (Just "pgContainer")
50− case ccid of
51− Left err -> error $ show err
52− Right i -> do
53− _ <- startContainer defaultStartOpts i
54− return i
42+runPostgresWithDataContainer = do
43+ h <- defaultHttpHandler
44+ runDockerT (defaultClientOpts, h) $
45+ -- We use a dummy command like /bin/true because we don't want to start
46+ -- the postgres database in the data container we just want it to
47+ -- create a container filesystem for us.
48+ do let dataOpts = setCmd "/bin/true" $ defaultCreateOpts "postgres:9.5"
49+ cid <- createContainer dataOpts (Just "myDataContainer")
50+ _ <-
51+ case cid of
52+ Left err -> error $ show err
53+ Right i -> startContainer defaultStartOpts i
54+ let pb = PortBinding 5432 TCP [HostPort "0.0.0.0" 5432]
55+ -- Default permission is read-write if we don't specify anything
56+ let vf = VolumeFrom "myDataContainer" Nothing
57+ let myCreateOpts = addVolumeFrom vf $ addPortBinding pb $ defaultCreateOpts "postgres:9.5"
58+ ccid <- createContainer myCreateOpts (Just "pgContainer")
59+ case ccid of
60+ Left err -> error $ show err
61+ Right i -> do
62+ _ <- startContainer defaultStartOpts i
63+ return i
5564
src/Docker/Client.hs+11−4
@@ -20,7 +20,9 @@ the host.
2020import Docker.Client
2121
2222runNginxContainer :: IO ContainerID
23−runNginxContainer = runDockerT (defaultClientOpts, defaultHttpHandler) $ do
23+runNginxContainer = do
24+ h <- defaultHttpHandler
25+ runDockerT (defaultClientOpts, h) $ do
2426 let pb = PortBinding 80 TCP [HostPort "0.0.0.0" 8000]
2527 let myCreateOpts = addPortBinding pb $ defaultCreateOpts "nginx:latest"
2628 cid <- createContainer myCreateOpts
@@ -42,7 +44,9 @@ Let's stop the container now:
4244
4345@
4446stopNginxContainer :: ContainerID -> IO ()
45−stopNginxContainer cid = runDockerT (defaultClientOpts, defaultHttpHandler) $ do
47+stopNginxContainer cid = do
48+ h <- defaultHttpHandler
49+ runDockerT (defaultClientOpts, h) $ do
4650 r <- stopContainer DefaultTimeout cid
4751 case r of
4852 Left err -> error "I failed to stop the container"
@@ -57,7 +61,9 @@ persist on the host file system.
5761
5862@
5963runPostgresContainer :: IO ContainerID
60−runPostgresContainer = runDockerT (defaultClientOpts, defaultHttpHandler) $ do
64+runPostgresContainer = do
65+ h <- defaultHttpHandler
66+ runDockerT (defaultClientOpts, h) $ do
6167 let pb = PortBinding 5432 TCP [HostPort "0.0.0.0" 5432]
6268 let myCreateOpts = addBinds [Bind "\/tmp" "\/tmp" Nothing] $ addPortBinding pb $ defaultCreateOpts "postgres:9.5"
6369 cid <- createContainer myCreateOpts
@@ -70,7 +76,8 @@ runPostgresContainer = runDockerT (defaultClientOpts, defaultHttpHandler) $ do
7076
7177= Get Docker API Version
7278
73−>>> runDockerT (defaultClientOpts, defaultHttpHandler) $ getDockerVersion
79+>>> h <- defaultHttpHandler
80+>>> runDockerT (defaultClientOpts, h) $ getDockerVersion
7481Right (DockerVersion {version = "1.12.0", apiVersion = "1.24", gitCommit = "8eab29e", goVersion = "go1.6.3", os = "linux", arch = "amd64", kernelVersion = "4.6.0-1-amd64", buildTime = "2016-07-28T21:46:40.664812891+00:00"})
7582
7683= Setup SSL Authentication