Colima och Docker för lokal utveckling på macos

Loftux avatar
Loftux
Cover for Colima och Docker för lokal utveckling på macos

Som för många utvecklare är Docker ofta en del av de utvecklarverktyg som används, och för Loftux där vi mestadels utvecklar för Alfresco, och där finns det flera containers som körs lokalt. I det här fallet, en Macbook M1 med en arm-processor.

Eftersom Docker inte kan köras native på macos, måste du använda en virtuell maskin för att köra docker, och verktyget som ofta används för det är Docker desktop, som kommer med ett trevligt UI och är lätt att installera. För små organisationer är detta verktyg gratis, men för större (250+) krävs en prenumeration. Min erfarenhet är dock att över tid när man utvecklar för flera kunder och flera projekt, så blir din docker-instans inuti Docker desktop uppsvälld och problem uppstår.

Lösningen har varit att byta till Colima, och dess stöd för flera profiler.

Att köra med en anpassad profil per kund/projekt låter dig hålla saker separerade inuti den virtuella docker-maskinen. Ingen anledning att oroa sig för att ditt docker system prune kommer att ta bort något du behöver för ett separat projekt. Och om det blir för rörigt eller saker börjar krångla, ta bara bort den profilen och börja om. Ingen risk att förlora det som behövs för dina andra projekt.

För att hantera detta har jag skapat ett wrapper-script, du kan hämta en kopia från github. I exemplen antas det att det är placerat i din environment path.

För att skapa en ny profil, eller starta en befintlig profil för kund acme, kör detta i din utvecklingsprojektmapp.
. devcolima.sh acme
Lägg märke till den inledande punkten, den finns där så att exporten av DOCKER_HOST i scriptet blir tillgängligt för shellet.
Om detta är första gången du kör, kommer det att skapa den nya profilen med de standardvärden som finns i scriptet, disk 50 GB, minne 10 GB, 6 CPU. Ändra bara för att matcha vad du behöver och fungerar för din maskin. Det installerar också Portainer som ditt GUI om du vill ha det för att hantera dina containers.

Första gången du kör scriptet för ett projekt mappar det den aktuella mappen som startmapp när disken mappas in i den virtuella maskinen. Detta bör göra saker snabbare, eftersom inte hela din hemkatalog mappas in i din virtuella maskin, utan gör också att varje colima-profil fungerar endast i den projektmappen. Så för den första initialiseringen, se till att köra scriptet i din projektmapp.

När du kör . devcolima.sh acme igen och acme-profilen körs, frågar den om du vill stoppa den först, så att den gör en omstart. Eller om du byter projekt du för närvarande arbetar med, kör bara . devcolima.sh coolclient och det kommer att stoppa den för närvarande körande colima-profilen, och starta din coolclient-profil.
Det finns bara en valfri parameter till scriptet, om du använder u eller U som andra parameter, . devcolima.sh acme u, kommer det att uppdatera colima-instansen för den virtuella maskinen och Portainer.

Och när dina docker-instanser börjar krångla, eller du är klar med att testa några docker-baserade lösningar som du inte behöver flytande runt längre, gör bara colima delete acme. Dagarna av att försöka få Docker desktop att fungera igen är förbi!