คุณต้องการคำตอบอีกนิดหน่อฉันพยายามที่จะตอบพวกเขาด้านล่างนี้:
1. มันเป็นความคิดที่ดีที่จะเอาของโปรแกรมในตู้คอนเทนเนอร์?
มันขึ้นอยู่กับ,มีหลายคดีทำไมคุณถึงอยากจะวิ่งหนีเหมือนตู้คอนเทนเนอร์มาทำอะไรหลายอย่าง แต่มันขึ้นอยู่กับหน่วยประมวลผล/แพง/การใช้งานหน่วยความจำของงาน และเมาหมดสติบ่อยแค่ไหนมันวิ่งหนี?
ยังไงก็ตาจากประสบการณ์ของฉันบอกได้ถ้าฉันหนีเป็น cronjob มาจากที่เดียวกันตู้คอนเทนเนอร์,ผมจะใช้งานวิธีเพื่อใช้เหมือนกั NodeJS แกน worker_threads
หรือ cluster
โมดูล เพราะคุณไม่อยากให้มันเป็น cronjob impacts พฤติกรรมของเธรดหลัก ฉันต้องเป็นตัวอย่างของวิ่ง 2 โปรแกรมอบหลายเธรดที่ติดตาม สาวนั่น.
2. ฉันควรจะแค่ทิ้ง docker และหนีไปที่โปรแกรมที่เป็นชนพื้นเมืองที่ระบบลินุกซ์ของฉัน ec2
Docker และ PM2 เป็น 2 จริงๆในสิ่งที่แตกต่างกันออกไป Docker นจบลงโดยเพื่อ containerize ของคุณทั้งหมดของโหนดแอพฯดังนั้นมันง่ายมากเลยเพื่อนยานลำนี้ PM2 คือกระบวนการจัดการสำหรับโหนดและทำให้แน่ใจว่าของแอ๊ปขึ้นและมาพร้อมกับบางอย่างดี metrics และปูมบันทึกส่วนติดต่อผู้ใช้ขอบ PM2 metrics. คุณสามารถอย่างแน่นอนใช้ 2 ด้วยกันอย่างที่ PM2 ทำยังมั่นใจของคุณโปรแกรจะเริ่มขึ้นหลังจากที่มันทำงานขัดข้อง.
อย่างไรก็ตามถ้าหากคุณใช้ pm2 คุณต้องใช้ pm2-runtime เมื่อใช้ docker. ตัวอย่างเช่น 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"]