Containers
Say Goodbye to Tedious Docker Commands: Embrace Docker to Bake Images
Building and pushing container image with Docker is easy. Right? We define a Dockerfile and we execute a command like docker image build ...
. Docker file is easy to define and the rest is just a CLI command. How hard can it be?
Well… It can be hard or, at least, tedious.
Imagine that we have to build images for multiple platforms, that each of those images should be released both as a specific version but also as latest. Then add to that the situation that we need to build more than one image, let’s say a backend and a frontend.
How many commands do we need to execute and how many arguments should each of those commands have? Can we remember all those arguments and are we willing to execute a bunch of commands?
That simple example already shows that building and pushing container images can be hard and tedious. The good news is that there is a better way. There is a declarative way to do all that.
Stop Losing Requests! Learn Graceful Shutdown Techniques
Look at this.
I will send a request to the application,…
curl "http://silly-demo.127.0.0.1.nip.io/fibonacci?number=50"
…and simulate failure or upgrade or any similar action by deleting the Pod where the application is running.
kubectl --namespace a-team delete pod \
--selector app.kubernetes.io/name=silly-demo
The output of the curl
command is as follows.
<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx</center>
</body>
</html>
Since we initiated the delete process before the server returned a response we got 502 Bad Gateway
message. The application was deleted before it could respond and I, the user of that application, failed to get what I was looking for. That’s horrible experience that could have been improved by enabling the application to shut down gracefully.