Gaudi News: gaudi.io, apt-get install gaudi, ambassadors, and more!
Two weeks ago, I gave a talk about gaudi at AperoWebNancy (view the French slides).
It was the occasion to announce a new dedicated website for gaudi: gaudi.io. Documentation, tutorials, online configuration builder, you'll find all things related to gaudi there. Thanks to @DaphDaOne & @francoisz for making this website possible.
apt-get install gaudi
I'm proud to announce that gaudi can now be installed from an apt repository (on Debian & Ubuntu):
wget -O - http://gaudi.io/apt/gaudi.gpg.key | sudo apt-key add -
echo "deb http://gaudi.io/apt/ precise main" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get install gaudi
Docker is not yet available on official Ubuntu repositories for versions up to 13, so if you're stuck there, install docker by hand before installing gaudi.
New Component: phpMyAdmin
phpMyAdmin is now part of the gaudi components list.
You can now attach it to a MySQL component to get a shiny web application for managing your database:
This component contains an apache server listening on the specified port, and serving a phpMyAdmin application.
Ambassadors
Docker alone doesn't allow linking of containers across multiple servers. Docker containers communication is restricted to the private network by design. Ambassadors lift that constraint, and they're now in gaudi.
So how can we deal with distant communication of Docker containers? Developers from Century Link Labs recently wrote about this subject:
Ambassadors are containers whose sole purpose is to help connect containers across multiple hosts
The magic behind Ambassadors is socat, a command line utility that allows socket manipulation and port forwarding.
Let's discover how gaudi integrates ambassadors with a simple redis client / server example:
On the distant machine, create a .gaudi.yml
file:
applications:
redis:
type: "index"
image: "dockerfile/redis"
ambassador:
type: "remote"
port: "6379"
Start the `redis server with:
$ gaudi
On the local machine, create a .gaudi.yml
to start the redis client:
applications:
redis-cli:
type: "index"
image: "vieux/redis-cli"
environments:
REDIS_PORT_6379_TCP_ADDR: [here to IP of the remote server]
ambassador:
type: "local"
port: "6379"
Start the redis
client with:
$ gaudi
You can now attach the client container, and communicate with the distant server:
$ docker attach redis-cli
Forcing Rebuild
In previous versions of gaudi, each time the configuration file was changed, you had to rebuild manualy all containers with the gaudi rebuild
command.
But that was before: gaudi now stores a checksum of your configuration file, and rebuilds automatically all containers when it detects a change.
Stdin & Stdout
Who doesn't get impatient when gaudi is building a container? The first launch, pulling the base image, and building containers, may take up to 10 minutes.
Thanks to a small Go trick, stdin & stdout are now attached to the build result.
This feature will now display the building progression, and delight impatient people.
Adding Files
Container customization is now simplified with the ability to add specific files (like configuration files) to a container:
applications:
app:
type: "apache"
add:
conf.ini: "/root/conf.ini"
dir/conf2.ini: "/root/conf2.ini"
Final Words
I hope you'll enjoy these new features! Feel free to send me (@manuquentin) feedback on the gaudi repository.