Many startups or small companies have very small teams developing big enterprise products, while there are larger companies having multiple people developing and managing the products. A basic enterprise software has the following functions:
Program Management
Developers
Testers
DevOps
Project Managers
Some of these activities can be performed by people having more than one responsibility. For example, a Program Manager might have a dual role of performing Project Management. Or a Lead Developer can take up the role of a project manager besides leading the team.
A developer most often also performs DevOps activity and in case of an SRE can be responsible for the upkeep of the deployed environment.
It really is about scale and the target of the product being developed. For a small to medium B2B application, a dedicated SRE or DevOps Engineer may not be required. A public facing high volume product, though developed with a few developers, will require SRE or a dedicated DevOps Engineer to manage uptime.
So how do we determine the scale of the team? It really comes down to one thing – Are we assuming that persons in the team won’t take leave or will not have emergencies?
As a project, we should have enough redundancies that the deliverables aren’t affected by sudden absence of allotted person to the role.
Let’s assume, a minimal scenario – we have a Lead Developer and a couple of developers on a B2B solution for a small to medium organization. Assuming the delivery date is 2 months away, It is easy to assume that all the three developers will have a day or two during this time in sickness or absent otherwise. In which case does it impact the delivery date or the quality? If the answer is no, then there are enough redundancies and the team size is good. If the answer is yes, it is obvious that the delivery of the product/project is destined for delay or failure. An Enterprise solution cannot be built on the dependence of a few or on the assumption that people won’t take leaves. Either there will be delays or there will be a tragic drop in quality of the product.
I always wanted to have a workspace that could replace many a tool I use as a paid alternative or tools hosted in the cloud. Specially now, when most of the time I spend at home working, I have a need to manage my productivity. It uses docker for easy siloed management and it does not require any complicated system changes that break one app or the other. Additionally Dockerhub is a treasure of images that can be run very easily and can be leveraged.
The only drawback to using docker as an app deployment tool is that all the tools run in different ports and one has to remember the mappings. The mappings are easily visible in portainer and hence useful. Another useful technique is to locally install nginx and use it as reverse proxy.
Bitwarden Server – To store all my passwords locally and not depend on passwords.google.com or Microsoft. Bitwarden is an open-source solution with a server, web app, browser plugin and iOS/Android apps.
Pihole – To Manage my network and conserve my bandwidth. Primarily an Adblocker and I use this to manage intrusive ads on my parents phones and desktop. This I also use to manage access to devices.
FileBrowser – To manage additional storage. Simple file manager to manage an attached storage. Simply attach a drive to the pi. Attach it to /srv to mount it to the container.
Hoppscotch – REST/Web Socket Client to replace Postman
Owncloud – Optionally I have a stopped instance of owncloud. I dont really need it as I could do with an old HDD attached to the pi.
Code Server – Code Editor/IDE. The Visual Studio Code Server replicates the desktop app to the web. It provides most of the features the desktop editor provides.
Additionally to the above installation, we get the following as dependencies. This can be leveraged for development:
Also other databases can be installed. Databases like Postgres could be run.
Rasberry PI Preparation
I have tested this in a Raspberry Pi 4gb and an 8gb, it could as well run in a 2gb version, but we may have to reduce the number of containers we host. To run docker efficiently, it is better to use a 64 bit image. I have used the raspbian beta image, however one can choose the ever so stable ubuntu server 64 for raspberry pi.
Browse to the URL of Portainer. Below is how it looks with containers.
Portainer also has App Template feature that can be used to deploy repdefined stake.
Add App from Dockerhub
In most cases the install is straight forward. Click on Containers -> Add A new container.
Choose an image with ARM 64. In the above example, we are adding an nginx server in the above. Once added to portainer, the env and storage parameters can be changed by looking at the documentation.
Add App using Docker Compose
Portainer accepts docker-compse and many stacks can be deployed using a docker-compose file.
A lot of tools may not compile due to the images being built with other platform. The moment there is a “process exec” error, it is probably incompatible with arm 64. In which case the best approach is to rebuild from source using an arm based image.
Portainer automatically will pick up any images added or containers launched.
This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Cookie settingsACCEPT
Privacy & Cookies Policy
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.