Ec2 örneğinde Docker kapsayıcısı ve PM2 çalıştırması

0

Soru

Bir düğüm uygulaması çalıştıran bir ec2 örneğim var. Docker'ı kullanarak bir konteyner uygulaması yapmayı düşünüyorum. Pm2 iki uygulamayı çalıştırıyor, biri gerçek düğüm uygulaması (express ve pug) ve gündemi kullanan bir cronjob. Uygulamalarımı tek bir kaba koymak iyi bir fikir mi?

Bunun artılarını ve eksilerini henüz bilmiyorum ve docker'ın zaten bir süreç yöneticisi olduğunu okudum. Bunu uyguladıktan sonra pm2 tüm bunlara nasıl sığacak. Ya da docker'ı terk etmeli ve uygulamaları ec2'imin yerel linux'unda çalıştırmalıyım.

amazon-ec2 docker node.js pm2
2021-11-23 22:13:26
1

En iyi cevabı

2

Birkaç sorunuz var, bunları aşağıda cevaplamaya çalışıyorum:

1. Uygulamalarımı tek bir kaba koymak iyi bir fikir mi?

Aynı kapsayıcıyı neden birden çok şey yaparak çalıştırmak istediğinize bağlı olarak birçok durum vardır. Ama gerçekten işin CPU / RAM / Bellek kullanımına bağlı. Ve ne sıklıkla çalışıyor?

Her neyse, tecrübelerime göre, aynı kapsayıcıdan bir cronjob çalıştırırsam, NodeJS çekirdeklerini kullanarak bunun için her zaman bir işçi yaklaşımı kullanacağımı söyleyebilirim worker_threads veya cluster modül. Çünkü bir cronjob'un ana iş parçacığının davranışını etkilemesini istemezsiniz. Aşağıdaki repoda birden çok iş parçacığında 2 uygulama çalıştırma örneğim var.

2. docker'dan vazgeçmeli ve uygulamaları ec2'imin yerel linux'unda çalıştırmalı mıyım

Docker ve PM2 2 gerçekten farklı şeylerdir. Docker temel olarak tüm Düğüm uygulamanızı kapsayacaktır, bu nedenle onu göndermek çok daha kolaydır. PM2, node için bir işlem yöneticisidir ve uygulamanızın çalıştığından emin olur ve bazı güzel metriklerle birlikte gelir ve PM2 metriklerinde kullanıcı arayüzünü günlüğe kaydeder. PM2, uygulamanızın çökmesinden sonra başlayacağından da emin olduğundan, 2'yi kesinlikle birlikte kullanabilirsiniz.

Ancak, pm2 kullanıyorsanız, docker'ı kullanırken pm2 çalışma zamanını kullanmanız gerekir. Örnek 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"]
2021-11-23 22:58:58

Çok teşekkür ederim cevap için. Cron işi yalnızca gece yarısı boyunca çalışır, bu nedenle ana uygulamayı etkilememelidir. Docker'ı gerçekten uygulamak istediğimden beri pm2-runtime'a bakacağım. Sanırım benim için bir sonraki şey, belki de Jenkins'i kullanarak tüm bunları yapı boru hattında nasıl yapacağımı anlamaktır.
cam

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................