You know how I love Docker and try to move everything inside containers. But a couple days ago I got a system warning that I have about 1Gb left on the root partition. That was a surprise. At the time I was in a Zoom call. And the first thing that came to my mind was “eh, must be Zoom eating up space”. But in the span of 30 minutes 1Gb turned to 100Mb. So I panicked a little, turned everything off, rebooted and got angry that it was still less than 100Mb on /
.
Imagine my amazement when I…
“Here we go, another article on setting up some thing in Docker 😒”, you might think. This time it’s Kafka. And I wouldn’t write about it if it was that trivial.
Thanks to wurstmeister, we have separate docker images for Kafka and Zookeeper. But setting this up my way without docker compose is a task in and of itself.
We’ll need two volumes for this guy. You know how it goes, go to “Volumes” side-menu and smash the “Add volume” button. Name the first one zookeeper_data
, and the second one - zookeeper_conf
.
Next go to the “Containers” side menu, click…
As I promised in the previous post, here we’ll take a look at how to spin up an ELK. Let’s go! 🚀
Straight to the point: open Portainer. Go to “Containers” and smash the “Add container” button. Then look at the screenshot below and fill values for Name, Image, Ports and Volumes. Maybe change Restart Policy to Unless stopped. One mild difference is that you need to click on “Advanced mode” in order to be able to pull an image from Elastic hub. In the screenshot it says “Simple mode” since I already chose advanced.
I already wrote about my flow when I deploy one container per service and use it for all of my projects. So it’s easier to get a development process up to speed.
This time I’ll tell you about connecting containerized services so they can talk to each other. And we’ll start with somewhat easy things like Prometheus and Grafana. And after that it will be a no-brainer for us to spin up an ELK stack. Let’s go! 🚀
All code examples and configs are available on my GitHub repo.
When we develop something we all need to use some services such as PostgreSQL, Redis, RabbitMQ and many-many others. But I don’t like the idea of installing each and every one of them on my local machine. So the idea of dockerizing everything looks very appealing.
In this article I’ll show how to deploy three mentioned services locally with docker. And, as a bonus, easy way of configuring and monitoring our containers park via Portainer.
Portainer is such a great and powerful tool that I just love! Let’s set it up and ease our next steps.
You need to create…
Below are just things to remember and do when installing two OS’es. Because I’m always forgetting something and then thinking “I should’ve written this down as a step-by-step guide” 😌.
Always install Windows first, and then Arch. That way Win will create a boot partition and other stuff it needs. So when installing Arch you just need to create partitions for /
and /home
.
Yes, drives C:
and D:
is a salvation. That way you can keep games, downloads, documents, etc. when reinstalling Win. So just do that and install Windows on drive C:
. And D:
will be the "storage".
…
Every day I track time on tasks I’m working on. My typical flow is write down a task number, description and time spent in a text document right after I’m done with that task. So at the end of the day I can just copy-paste that info in task tracker. But sometimes I sit there calculating how many hours of work I have left. Did I overwork? Or maybe I have couple of hours left to start another task? And that’s when I had an idea to write an app that would track all of it for me.
We all know *args
and **kwargs
in function parameters. It says that args
are positional arguments however many you want to provide. And kwargs
are keyword arguments, however many as well. We aren’t limited to name them args
and kwargs
, it’s just everyone do it and it’s convenient to name them this way.
def foo(a, b, *args, **kwargs):
print(a)
print(b)
print([arg for arg in args])
print([f'{k}: {v}' for k, v in kwargs.items()])foo(1, 2, 3, 4, f=5, g=6)
1
2
[3, 4]
['f: 5', 'g: 6']
1
and 2
are our required arguments. 3
and 4
would be our args
…
Все мы периодически находимся в поиске работы. И бывает, что это занимает тонну времени и оставляет после себя кучу непросмотренных или оставшихся без ответа откликов. А если добавить сюда конкуренцию в IT сфере, то кажется, что лучше вообще зацепиться за одно место и сидеть не дёргаясь. Но есть же люди, которые буквально сидят и выбирают из сыплющихся в их почтовый ящик или телефон предложений. Я хочу помочь тебе стать тем человеком, кто выбирает.
Небольшое отступление: у меня не было и не предвидится профильного IT образования. Но тем не менее я смог сменить работу специалиста по экономической безопасности завода на разработчика…
For the past 4 years I’ve been coding in Python and when it comes to web I always go with Django + Bootstrap and jQuery. I also know how to style a page with css but nothing super fancy. And I always stayed far away from modern SPAs and their frameworks/libraries such as React, Angular or Vue. I tried it once and the experience was horrible. I knew nothing about babel, webpack, yarn and how it all glues together. Not to mention arrow functions and destructuring in JS. But eventually I decided to try it one more time and spent…
переводчик-любитель | трачу два часа своего времени, чтобы тебе было чем заняться в течение пяти минут