Wpis z mikrobloga

Miraski, przyszedł czas ogarnięcia dockera. Wiem już, że docker ma warstwy (jak cebula i ogry) i ogólnie powinno się dążyć do tego, żeby warstw było jak najmniej i nie były zbyt duże. Mam apkę w angularze która ma wylądować w dockerze.

Projekt angularowy na produkcję możemy zbudować poleceniem ng build - dostajemy zoptymalizowany JS w jednym katalogu. W dockerfile każemy załadować katalog do obrazu i możemy śmigać. Żeby zrobić to optymalnie muszę mieć skrypt bashowy + dockerfile.

Jednak z tego co wyczytałem w dockerze jest coś takiego jak multistage-build który ma rozwiązywać problem utrzymywania skryptu i osobno optymalnego dockerfile na produkcję. Tu opis jak taki dockerfile powinien wyglądać -> https://medium.com/@avatsaev/create-efficient-angular-docker-images-with-multi-stage-builds-907e2be3008d

Co się dzieje z warstwami z pierwszej części builda? Czy to rzeczywiście optymalne rozwiązanie? Gdybym w drugiej części builda nie chciał używać nginx tylko serwować apkę przez node.js (deweloper tak to wymyślił) mogę drugi raz użyć FROM node:8.1.4-alpine ?

#docker #programowanie #angular
  • 2
@Koryntiusz: Możesz to służy właśnie do tego, żebyś nie musiał w obrazie z runtime mieć np. deweloperskich pakietow. Co do montowania katalogów to polecam tworzyć obrazy już zawierajace aplikacje. Jest łatwiej niż posiadanie obrazu i montowanie kodu do katalogu podczas uruchomienia. Dzięki temu uruchamiasz image i masz cała apke, nie musisz mieć kodu bo jest już w kontenerze. Do tego image traktujesz jako pakiet z aplikacja, wersjonujesz sobie po short sha