Máte pár otázek, pokusím se na ně odpovědět níže:
1. Je to dobrý nápad, dát své aplikace v jednom kontejneru?
To záleží, existuje mnoho případů, proč byste chtěli spustit stejné nádoby dělat více věcí. Ale to opravdu záleží na CPU/paměti RAM/Paměti využití práce. A jak často to jezdí?
Každopádně z vlastní zkušenosti můžu říct, že když jsem spustit cronjob ze stejné nádoby, bych vždy používat pracovník přístup pro to buď pomocí NodeJS jader worker_threads
nebo cluster
modul. Protože nechcete, že cronjob dopady chování hlavní vlákno. Mám příklad spuštěné 2 aplikace na více vláken v následující repo.
2. měla jsem jen příkop docker a spuštění aplikace v nativní linux mého ec2
Docker a PM2, jsou to 2 opravdu rozdílné věci. Docker je v podstatě kontejnerizovaní celý Uzel aplikace, takže je mnohem jednodušší na loď. PM2 je proces, správce uzlu a zajistí, že vaše aplikace je nahoru a přichází s nějaké pěkné metriky a protokoly ROZHRANÍ na PM2 metriky. Můžete určitě použít 2 dohromady, jako PM2 je také jisti, že vaše aplikace bude začít až po zhroucení.
Nicméně, pokud budete používat pm2 budete muset použít pm2-modul runtime při použití docker. Příklad Dockerfile:
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"]