ฉันกำลังสร้างอิมเมจ Docker พื้นฐานสำหรับองค์กรของฉันเพื่อให้ทีมแอปพลิเคชันใช้เมื่อพวกเขาปรับใช้แอปพลิเคชันใน OpenShift หนึ่งในรูปภาพที่ฉันต้องทำคือรูปภาพ NodeJS (เราต้องการให้รูปภาพของเราเป็นแบบภายในแทนที่จะมาจาก DockerHub) ฉันกำลังสร้างจากอิมเมจฐานสากล RHEL7 (ubi) ของ RedHat อย่างไรก็ตาม ฉันประสบปัญหาในการกำหนดค่า NodeJS ให้ทำงานในคอนเทนเนอร์ นี่คือ Dockerfile ของฉัน:
FROM myimage_rhel7_base:1.0
USER root
RUN INSTALL_PKGS="rh-nodejs10 rh-nodejs10-npm rh-nodejs10-nodejs-nodemon nss_wrapper" && \
yum install -y --setopt=tsflags=nodocs $INSTALL_PKGS && \
rpm -V $INSTALL_PKGS && \
yum clean all
USER myuser
อย่างไรก็ตาม เมื่อฉันเรียกใช้อิมเมจ ไม่มีคำสั่ง node
หรือ npm
เว้นแต่ฉันจะเรียกใช้ scl enable rh-nodejs10 bash
สิ่งนี้ใช้ไม่ได้กับ Dockerfile เนื่องจากจะสร้างเชลล์ย่อยที่ผู้ใช้ที่เข้าถึงคอนเทนเนอร์จะไม่สามารถใช้งานได้
ฉันได้ลองติดตั้งจากแหล่งที่มาแล้ว แต่ฉันพบปัญหาอื่นที่จำเป็นต้องอัปเกรดเวอร์ชัน gcc/g++ แม้ว่าเวอร์ชันเหล่านั้นจะไม่พร้อมใช้งานใน repos ที่กำหนดค่าไว้จากองค์กรของฉันก็ตาม ฉันยังคิดว่าหากฉันสามารถให้ NodeJS ทำงานจากตัวจัดการแพ็คเกจได้ มันจะช่วยให้ได้รับแพตช์ด้านความปลอดภัย และควรอัปเดตแพ็คเกจด้วย
คำถามของฉันคือ ขั้นตอนที่แนะนำในการสร้างอิมเมจที่สามารถใช้สร้างแอปพลิเคชันที่ทำงานบน NodeJS คืออะไร