Awesome
Cake.Docker
A Cake AddIn that extends Cake with Docker command tools.
Including addin
Including addin in cake script is easy.
#addin "Cake.Docker"
Commands supported
Cake references
-
1.3.0: Cake 4.0.0
-
1.2.0: Cake 3.0.0
-
1.1.0: Cake 2.0.0
-
1.0.0: Cake 1.0.0
-
0.10.0: Cake 0.33
-
0.9.4: Cake 0.28
-
0.9 references Cake 0.26 (and goes .NET Standard 2.0 only)
Important: In version 1.2.1 DockerComposeUpSettings.DetachedMode
is renamed to Detach
.
Important: In version 1.2.0 the .netcore 3.1 is dropped, only .net6+ versions are distributed.
Important: In version 1.1.0 the .netstandard 2.0 version is dropped and instead .netcore 3.1, .net5 and .net6 versions are distributed.
Important: Since version 0.10.0 path argument to DockerBuild is now quoted if not quoted already.
Important: Docker 17.* is supported since v0.8 and background compatibility is dropped (most notably, array arguments are converter to strings). If you wish to match older docker versions, user an older Cake.Docker version.
Important: Since version 0.8.0 the settings are generated from the latest Docker source code on github.
BREAKING Starting with 0.8.0 command's setting types that haven't been composed of all words have changed to full name. i.e. DockerBuildSettings to DockerImageBuildSettings).
- DockerComposeCp v1.1.1
- DockerBuildXBake v1.1.0
- DockerBuildXBuild v1.1.0
- DockerBuildXCreate v1.1.0
- DockerBuildXDu v1.1.0
- DockerBuildXImageToolsCreate v1.1.0
- DockerBuildXImageToolsInspect v1.1.0
- DockerBuildXInspect v1.1.0
- DockerBuildXInstall v1.1.0
- DockerBuildXLs v1.1.0
- DockerBuildXPrune v1.1.0
- DockerBuildXRm v1.1.0
- DockerBuildXStop v1.1.0
- DockerBuildXUninstall v1.1.0
- DockerBuildXUse v1.1.0
- DockerBuildXVersion v1.1.0
- DockerComposePush v1.0.0
- DockerContainerLs v0.11.1
- DockerImageLs v0.11.1
- DockerManifestAnnotate v0.11.0
- DockerManifestCreate v0.11.0
- DockerManifestInspect v0.11.0
- DockerManifestPush v0.11.0
- DockerComposePs v0.10.1
- DockerComposePort v0.10.1
- DockerVolumeCreate v0.10.0
- DockerVolumeInspect v0.10.0
- DockerVolumeLs v0.10.0
- DockerVolumePrune v0.10.0
- DockerVolumeRm v0.10.0
- DockerPs v0.9.9
- DockerComposeLogs v0.9.7
- DockerComposeExec v0.9.2
- DockerCustomCommand (can execute any command) v0.8.4
- DockerLogout v0.8.3
- DockerStart v0.8.2
- DockerLogs v0.8.2
- DockerExec v0.8.0
- DockerRun v0.7.2
- DockerPull v0.7.1
- DockerComposeBuild v0.7.0
- DockerComposeCreate v0.7.0
- DockerComposeDown v0.7.0
- DockerComposeKill v0.7.0
- DockerComposePause v0.7.0
- DockerComposePull v0.7.0
- DockerComposeRestart v0.7.0
- DockerComposeRm v0.7.0
- DockerComposeRun v0.7.0
- DockerComposeScale v0.7.0
- DockerComposeStart v0.7.0
- DockerComposeStop v0.7.0
- DockerComposeUnpause v0.7.0
- DockerComposeUp v0.7.0
- DockerLoad v0.6.0
- DockerSave v0.6.0
- DockerNetworkCreate v0.5.0
- DockerNetworkConnect v0.5.0
- DockerNetworkDisconnect v0.5.0
- DockerNetworkRm v0.5.0
- DockerSwarmInit v0.5.0
- DockerSwarmJoin v0.5.0
- DockerSwarmLeave v0.5.0
- DockerSwarmUpdate v0.5.0
- DockerLogin v0.4.0
- DockerPush v0.4.0
- DockerTag v0.4.0
- DockerRm
- DockerRmi
- DockerStop
- DockerBuild
- DockerCreate v0.2.0
- DockerBuild v0.1.0, 0.2.0 (full settings)
- DockerCp v0.2.0
Usage
To use the addin just add it to Cake call the aliases and configure any settings you want.
#addin "Cake.Docker"
...
// How to remove a container with no settings
Task("DockerRm")
.Does(() => {
// or more containers at once
DockerRm("containerName1", "containerName2", ...);
)};
// How to remove a container with settings
Task("DockerRmWithSettings")
.Does(() => {
// or more containers at once
DockerRm(new DockerRmSettings { Force = true }, "containerName1", "containerName2", ...);
)};
Other commands follow same convention.
All come with settings argument and support all settings except for DockerBuild which supports only major settings.
General Notes
This is an initial version and not tested thoroughly.
Contributions welcome - but ask first (create an issue).
Tested only on Windows and Ubuntu. Ensure that Docker command line tool can be located using the PATH (e.g. check that it can be found with which docker
).
On Linux machines, ensure that user has access to the docker
daemon Unix socket or use the DOCKER_HOST environment variable to point to the daemon's TCP port.
Refer to the Docker documentation for controlling access to the docker daemon Unix socket.
Discussion
For questions and to discuss ideas & feature requests, use the GitHub discussions on the Cake GitHub repository, under the Extension Q&A category.