Published by mariotoffia over 6 years ago
The fluentdocker library now uses multiple versions of the net core framework in it's dependency and therefore if used in a core 2.0 project it do no longer require old 1.1 dlls. This is achieved by adding core 2.0 as additional target and is included in nugget package in addition to 1.1 and full framework 4.5
Published by mariotoffia almost 7 years ago
Fixed bug in Hosts.Discover where it required docker-machine. Now it skips docker-machine if not present and just detects the native docker daemon.
Published by mariotoffia almost 7 years ago
Now it just enumerates files with docker to get the initialization performance better.
It also adheres, again, to the DOCKER_TOOLBOX_INSTALL_PATH when searching for binaries.
Published by mariotoffia almost 7 years ago
Relaxed the amount of docker binaries to require. Now it only requires that docker or docker.exe is in the path. The other two; docker-compose and docker-machine is now optional and will only debug log when not found.
Published by mariotoffia almost 7 years ago
Completely rewrote the search for docker binaries. This is much more flexible. Tested on windows and somewhat on Linux. I currently have no Mac so that part is completely untested.
Published by mariotoffia about 7 years ago
This is a fix for DigitalOcean that do not reply with DiskSize
and CPU
in the driver object.
It is released as nuget packages version 2.2.3.
Published by mariotoffia over 7 years ago
A initial bugfix for docker-machine functionality.
There still are issues with docker-machine
since it will complain about not being able to contact the daemon. It works but the tests fails. This needs to be addressed later on.
For now it works and may be used.
Published by mariotoffia over 7 years ago
Thanks to smudge202 a .NET Core version of the FluentDocker now exists.
Many thanks for that!
Published by mariotoffia over 8 years ago
Better cope with IPv6 - this is a patch release - same restrictions applies as with 2.1.0.
Published by mariotoffia over 8 years ago
Switched to .NET Framework 4.5.1. This release contains lots of breaking changes. Do not use if you're not planning on 3.0.0. When the 3.0.0 release is done, it will contain info of everything that have changed.
Use this only if you must have 4.5.1 support
Published by mariotoffia over 8 years ago
With this release it is possible to define Dockerfiles in a fluent API and build them on the fly. It is possible to build new images and create new containers within the same fluent build. This release also comes with support for querying images from the host service.
Checkout the FluentMultiContainerTests to se the build in action:
using (var services = new Builder()
// Define custom node image to be used
.DefineImage("mariotoffia/nodetest")
.ReuseIfAlreadyExists()
.DefineFrom("ubuntu").Maintainer("Mario Toffia <[email protected]>")
.Run("apt-get update &&",
"apt-get -y install curl &&",
"curl -sL https://deb.nodesource.com/setup | sudo bash - &&",
"apt-get -y install python build-essential nodejs")
.Run("npm install -g nodemon")
.Add("embedded:Ductus.FluentDockerTest/Ductus.FluentDockerTest.MultiContainerTestFiles/package.txt",
"/tmp/package.json")
.Run("cd /tmp && npm install")
.Run("mkdir -p /src && cp -a /tmp/node_modules /src/")
.UseWorkDir("/src")
.Add("index.js", "/src")
.ExposePorts(8080)
.Command("nodemon", "/src/index.js").Builder()
// Redis Db Backend
.UseContainer().WithName("redis").UseImage("redis").Builder()
// Node server 1 & 2
.UseContainer().WithName("node1").UseImage("mariotoffia/nodetest").Link("redis").Builder()
.UseContainer().WithName("node2").UseImage("mariotoffia/nodetest").Link("redis").Builder()
// Nginx as load balancer
.UseContainer().WithName("nginx").UseImage("nginx")
.Link("node1", "node2").CopyOnStart(nginx, "/etc/nginx/nginx.conf").ExposePort(80).Builder()
.Build().Start())
{
Assert.AreEqual(4, services.Containers.Count);
var ep = services.Containers.First(x => x.Name == "nginx").ToHostExposedEndpoint("80/tcp");
Assert.IsNotNull(ep);
var round1 = $"http://{ep.Address}:{ep.Port}".Wget();
Assert.AreEqual("This page has been viewed 1 times!",round1);
var round2 = $"http://{ep.Address}:{ep.Port}".Wget();
Assert.AreEqual("This page has been viewed 2 times!", round2);
}
Published by mariotoffia over 8 years ago
Completely Rewritten to reduce the amount of NuGet packages. As a trade off it now requires docker to be installed on the host that the FluentDocker executes on.
It supports docker-machine, native (Linux) docker, and docker for windows beta. Only tested on window machine though!
On Mac you can in theory both run the beta emulated native and docker machine at the same time (not tested). This dual support do not exist on windows since hyperv and virtualbox cannot coexist on windows.
The design is a three layer design where each layer is extremely thin:
This allows for interacting with docker machine and create new docker hosts on the fly and running containers on different machines. Support for explicit drivers such as cloud providers will come at a later stage.