Docker healthchecks – things to consider

While working on a recent docker project I encountered an issue when it comes to health checks. You may define a health check for a container from within your Dockerfile, such as

HEALTHCHECK --interval=5s --timeout=5s --start-period=20s
         --retries=5 CMD wget --output-document=- 
         --quiet --tries=1 http://127.0.0.1

The syntax is quite simple to understand, you basically define how and when the health check should be executed and which command(s) to use. Breaking things down from the example

  • –interval=5s – run the check every 5 seconds
  • –timeout=5s – maximum time to wait for the health check to complete
  • –start-period=20s – allow some time for the process to be monitored to come to a functioning state, avoids false alarms during startup, in this case we allow 20 seconds
  • –retries=5 – only trigger an alarm after 5 unsuccessful tries (non zero exit code) – this helps avoiding false alarms in case the process is under heavy load
  • After the CMD follows the command to execute, this is done from inside the container, in the given example we check for the webserver to deliver something indicating the server is working properly

However every one should consider on how flexible the health check should be to match as many use cases as possible. This is especially true if you are dealing with web-based endpoints as pointed out in the example.

Continue reading

MSSQL-Server mit Docker unter Linux

Der Titel hört sich im ersten Moment etwas schräg an – insbesondere wenn man zu den etwas älteren Semestern gehört, die noch die Anfeindungen Microsofts in Richtung Linux kennen gelernt haben. Unter anderem mit Werbesprüchen wie „ein freies Betriebssystem hat nicht nur Vorteile“ – verbunden mit einem Bild welches Piguine als Repräsentanten von Linux zeigte mit nicht ganz passenden Köpfen. Das war 2001 und geworben wurde für Windows 2000. Die Zeiten haben sich geändert und mittlerweile gibt es sogar offizieller Weise ein „Windows Subsystem for Linux“ (WSL) und auch erfreuliche Entwicklungen hin zu einer deutlich brauchbareren (Power-)Shell als es die altgediente command.com bzw. cmd.exe je waren. Das Ganze kommt nicht ganz von ungefähr – mit der Microsoft Azure Cloud mussten Werkzeuge her mit denen man Systeme vernünftig remote administrieren kann – da ist es durchaus legitim einmal zu schauen was bei anderen Betriebssystemen für den Erfolg mit verantwortlich ist.

Continue reading

Never touch a running system

Das hat unsere IT-Abteilung für die Versorgung mit Rechnern doch wieder mal exakt hinbekommen. Mein Kollege bekommt pünktlich zum Beginn meines Urlaubs einen neuen Rechner … Dabei habe ich doch gerade auch einen Praktikanten, den ich auch noch einweisen muss. Meine eigentliche Arbeit habe ich daher schon mal ganz hinten angestellt – vor dem Urlaub wird es wohl nichts mehr mit der Fertigstellung.

Insgesamt bin ich aber doch recht angetan von unserem Praktikanten – nach nicht mal zwei Wochen hat er jetzt ein einfaches Modul übernommen – ich bin mal gespannt wie sich das entwickelt während ich in Urlaub bin. Noch bin ich da recht zuversichtlich. Das da die eine oder andere Frage auftaucht, gerade am Anfang ist eine ganz natürliche Sache – jeder hat mal klein angefangen und da gibt es deutlich unselbstständigere Mitarbeiter.

Die größere Herausforderung war da der Rechner des Kollegen – da muss nämlich alles was Entwicklungstools heißt dann wieder neu installiert werden. Die werden nämlich nicht migriert – stattdessen gibt es neue Versionen von Notes und ein neues Office (in beiden findet man mal wieder nicht das was man eigentlich sucht …)

Besonders läßtig sind dann wieder die Spielchen mit WAMP und der Entwicklungsumgebung – Eclipse an sich ist ja noch harmlos – aber die ganzen Plugins sind dann schon wieder eine Herausforderung. Zumal man ja die Chance auch nutzt und dann doch mal endlich ein Upgrade auf die aktuelle Version machen will. Abgehangene Tools sind doch eher nicht so der Hit. Auch ich habe da wieder etwas dazu gelernt und meine internen Versionszähler mal aktulisiert. Mittlerweile ist Eclipse ja bei 4.2 aka Juno angekommen – ich arbeite noch mit Helios also der 3.6er Version – da wäre auch bei mir mal ein Upgrade angebracht … Immerhin habe ich jetzt auch endlich mal die Zeit gefunden mich mit den verschiedenen Konzepten etwas näher auseinander zu setzen – gut wenn man sein Werkzeug besser kennen lernt.

Subclipse hat sich auch weiter entwickelt – genauso wie Subversion selbst – das hatte ich noch so nebenher mitbekommen.

Insgesamt war ich dann doch überrascht wie gut das alles zu installieren war.

Das dicke Ende war dann mein spezieller Freund: Die Extensions für WAMP bzw. PHP – da gibt es dann wieder x Varianten und inkompatible Kompiler von Microsoft gleich en top mit dazu. Noch dazu, ganz wichtig für die Installation von Libraries unter Windows: Ein Neustart – und das für dynamische Libraries – was soll daran bitte dynamisch sein? Das hat mich mal wieder einiges an Nerven und Zeit gekostet – zumal es mal wieder so absolut unintuitiv ist ….

Morgen geht es noch ein wenig an weitere Plugins, dann haben wir es hoffentlich passend zum Urlaub geschafft …