Masz kilka pytań, postaram się odpowiedzieć poniżej:
1. Dobra czy pomysł umieszczać moje aplikacje w jeden kontener?
To zależy od tego, istnieje wiele przypadków, gdy chcesz uruchomić jeden i ten sam pojemnik, wykonując kilka zadań. Ale to naprawdę zależy od procesora/pamięci ram/pamięci w zadaniu. I jak często to się dzieje?
W każdym razie, na podstawie własnych doświadczeń mogę powiedzieć, że gdybym uruchamiał cronjob z jednego i tego samego pojemnika, ja zawsze używałem do tej pracy podejście, za pomocą jądra NodeJS worker_threads
lub cluster
moduł. Bo nie chcesz, aby cronjob wpływa na zachowanie głównego wątku. Mam przykład uruchomienia 2 aplikacje w wielu liniach w przyszłym repozytorium.
2. czy mogę po prostu zrezygnować z nudziarz z niego, co i uruchamianie aplikacji w ojczystym Linux mojego ec2
Docker i PM2-to 2 naprawdę różne rzeczy. Docker jest w zasadzie przeznaczony dla konteneryzacja całego aplikacji hosta, więc o wiele łatwiej wysłać. PM2-to menedżer procesów dla węzła, który czuwa nad tym, aby twoja aplikacja działało i miało kilka dobrych wyników, i rejestruje interfejs użytkownika w rejestrach PM2. Na pewno można użyć 2 razem, tak jak PM2 również gwarantuje, że twoja aplikacja zostanie uruchomiony po awarii.
Jednakże, jeśli używasz pm2, należy użyć pm2-czas realizacji przy użyciu docker. Przykład Pliku konfiguracyjnego:
FROM node:16.9.0
WORKDIR /home/usr/app
COPY . .
RUN npm ci && npm run build
# default command is starting the server
CMD ["npx", "pm2-runtime", "npm", "--", "start"]