NestJS ಮೈಕ್ರೋ ಸರ್ವೀಸ್ನಲ್ಲಿನ ಡಾಕರ್ ಸಮಸ್ಯೆಗಳ ನಿವಾರಣೆ
ಅಭಿವೃದ್ಧಿಪಡಿಸುವಾಗ ಎ ನೆಸ್ಟ್ಜೆಎಸ್ ಮೈಕ್ರೋಸರ್ವಿಸ್-ಆಧಾರಿತ RestAPI, ಡಾಕರ್ ಕಂಟೇನರ್ನಲ್ಲಿ ಸೇವೆಗಳನ್ನು ಚಾಲನೆ ಮಾಡುವುದು ಕೆಲವೊಮ್ಮೆ ಅನಿರೀಕ್ಷಿತ ಸಮಸ್ಯೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು. ಡಾಕರ್ ಹುಡುಕಲು ಸಾಧ್ಯವಾಗದಿದ್ದಾಗ ಅಂತಹ ಒಂದು ಸಮಸ್ಯೆ ಉದ್ಭವಿಸುತ್ತದೆ @nestjs/cli/bin/nest.js ಮಾಡ್ಯೂಲ್, ಸೇವೆಯನ್ನು ಚಾಲನೆ ಮಾಡುವುದನ್ನು ತಡೆಯುತ್ತದೆ.
ದೃಢೀಕರಣ ಮತ್ತು ಕಾಯ್ದಿರಿಸುವಿಕೆಗಳಂತಹ ಬಹು ಸೇವೆಗಳನ್ನು ನೀವು ಈಗಾಗಲೇ ಹೊಂದಿಸಿರುವಾಗ ಮತ್ತು ಅವುಗಳು ತಮ್ಮ ಕಂಟೇನರ್ಗಳಲ್ಲಿ ಸರಾಗವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಕೆಲಸ ಮಾಡುತ್ತಿರುವಾಗ ಈ ಸಮಸ್ಯೆಯು ವಿಶೇಷವಾಗಿ ನಿರಾಶಾದಾಯಕವಾಗಿರುತ್ತದೆ. ಮುಖಾಮುಖಿ ಎ MODULE_NOT_FOUND ದೋಷವು ಅಭಿವೃದ್ಧಿಯನ್ನು ನಿಲ್ಲಿಸಬಹುದು ಮತ್ತು ತಕ್ಷಣದ ದೋಷನಿವಾರಣೆಯ ಅಗತ್ಯವಿರುತ್ತದೆ.
ಸಮಸ್ಯೆಯು ಸಾಮಾನ್ಯವಾಗಿ ಡಾಕರ್ ಕಂಟೇನರ್ನಲ್ಲಿ ಅವಲಂಬನೆಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ ಎಂಬುದಕ್ಕೆ ಸಂಬಂಧಿಸಿದೆ, ವಿಶೇಷವಾಗಿ a ಅನ್ನು ಬಳಸುವಾಗ ನೋಡ್: ಆಲ್ಪೈನ್ ಬೇಸ್ ಇಮೇಜ್ ಮತ್ತು ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ಗಳು ಇಷ್ಟಪಡುತ್ತಾರೆ pnpm. ದೋಷ ಲಾಗ್ ಸಾಮಾನ್ಯವಾಗಿ ಕಂಟೇನರ್ನಲ್ಲಿ ಕಾಣೆಯಾದ ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ ನೋಡ್_ಮಾಡ್ಯೂಲ್ಗಳು ಡೈರೆಕ್ಟರಿ, ಇದು ಸೇವಾ ಪ್ರಾರಂಭ ಪ್ರಕ್ರಿಯೆಯ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ.
ಈ ಮಾರ್ಗದರ್ಶಿಯಲ್ಲಿ, ನಾವು ಈ ದೋಷದ ಸಾಮಾನ್ಯ ಕಾರಣಗಳ ಮೂಲಕ ನಡೆಯುತ್ತೇವೆ, ಸಂಭಾವ್ಯ ಪರಿಹಾರಗಳನ್ನು ಚರ್ಚಿಸುತ್ತೇವೆ ಮತ್ತು ಅದನ್ನು ಪರಿಹರಿಸಲು ಶಿಫಾರಸುಗಳನ್ನು ಒದಗಿಸುತ್ತೇವೆ, ಡಾಕರ್ ಪರಿಸರದಲ್ಲಿ ನಿಮ್ಮ NestJS ಸೇವೆಗಳು ನಿರೀಕ್ಷೆಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುತ್ತೇವೆ.
ಆಜ್ಞೆ | ಬಳಕೆಯ ಉದಾಹರಣೆ |
---|---|
@nestjs/cli | ಈ ಆಜ್ಞೆಯು ಜಾಗತಿಕವಾಗಿ NestJS CLI ಅನ್ನು ಸ್ಥಾಪಿಸುತ್ತದೆ, ಇದು ಡಾಕರ್ನಲ್ಲಿ NestJS ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಚಲಾಯಿಸಲು ನಿರ್ಣಾಯಕವಾಗಿದೆ. ಇದು ತಪ್ಪಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ "ಮಾಡ್ಯೂಲ್ @nestjs/cli/bin/nest.js ಅನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗಲಿಲ್ಲ" ದೋಷ. |
RUN npm install -g pnpm | ಡಾಕರ್ ಕಂಟೇನರ್ನಲ್ಲಿ ಜಾಗತಿಕವಾಗಿ pnpm ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಅನ್ನು ಸ್ಥಾಪಿಸುತ್ತದೆ, ಇದು ಎಲ್ಲಾ ಅವಲಂಬನೆಗಳನ್ನು, ವಿಶೇಷವಾಗಿ pnpm ಗೆ ಸ್ಕೋಪ್ ಮಾಡಲಾದವುಗಳನ್ನು ಸರಿಯಾಗಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. |
pnpm run build | pnpm ಅನ್ನು ಬಳಸಿಕೊಂಡು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸೇವೆಗಾಗಿ (ದೃಢೀಕರಣ ಅಥವಾ ಕಾಯ್ದಿರಿಸುವಿಕೆಗಳು) ಬಿಲ್ಡ್ ಕಮಾಂಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ, ಅಪ್ಲಿಕೇಶನ್ ಅಭಿವೃದ್ಧಿ ಮತ್ತು ಉತ್ಪಾದನಾ ಪರಿಸರಗಳಿಗೆ ಸರಿಯಾಗಿ ನಿರ್ಮಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. |
COPY --from=development /usr/src/app/dist | ಈ ಡಾಕರ್ ಮಲ್ಟಿ-ಸ್ಟೇಜ್ ಬಿಲ್ಡ್ ಕಮಾಂಡ್ ಬಿಲ್ಡ್ ಔಟ್ಪುಟ್ ಅನ್ನು ಡೆವಲಪ್ಮೆಂಟ್ ಹಂತದಿಂದ ಉತ್ಪಾದನಾ ಹಂತಕ್ಕೆ ನಕಲಿಸುತ್ತದೆ, ಡಾಕರ್ ಇಮೇಜ್ ಗಾತ್ರವನ್ನು ಉತ್ತಮಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ರನ್ ಮಾಡಲು ಸಿದ್ಧವಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. |
CMD ["node", "dist/apps/auth/main.js"] | ಈ ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ ದೃಢೀಕರಣ ಬಿಲ್ಟ್ ಡಿಸ್ಟ್ ಡೈರೆಕ್ಟರಿಯಿಂದ ಮುಖ್ಯ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಫೈಲ್ ಅನ್ನು ನೇರವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮೂಲಕ ಉತ್ಪಾದನೆಯಲ್ಲಿ ಸೇವೆ. |
testEnvironment: 'node' | ಜೆಸ್ಟ್ ಕಾನ್ಫಿಗರೇಶನ್ನಲ್ಲಿ, ಈ ಆಜ್ಞೆಯು ಪರೀಕ್ಷಾ ಪರಿಸರವನ್ನು Node.js ಗೆ ಹೊಂದಿಸುತ್ತದೆ, ಘಟಕ ಪರೀಕ್ಷೆಗಳು ಬ್ಯಾಕೆಂಡ್ ಪರಿಸರವನ್ನು ನಿಖರವಾಗಿ ಅನುಕರಿಸಬಲ್ಲವು ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. |
describe('Nest CLI Module Check') | ಜೆಸ್ಟ್ನಲ್ಲಿ, ಈ ಕಾರ್ಯವು ಪರೀಕ್ಷಿಸಲು ಪರೀಕ್ಷಾ ಸೂಟ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ ನೆಸ್ಟ್ CLI ಡಾಕರ್ ಕಂಟೇನರ್ನಲ್ಲಿ ಸರಿಯಾಗಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ, ಮಾಡ್ಯೂಲ್ ಅವಲಂಬನೆಗಳನ್ನು ಪರಿಹರಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. |
exec('nest --version') | ಎಂಬುದನ್ನು ಪರಿಶೀಲಿಸಲು ಪರೀಕ್ಷೆಯೊಳಗೆ ಶೆಲ್ ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ ಗೂಡು CLI ಡಾಕರ್ ಕಂಟೇನರ್ನಲ್ಲಿ ಲಭ್ಯವಿದೆ, ಮಾಡ್ಯೂಲ್ ಕಾಣೆಯಾಗಿದೆಯೇ ಅಥವಾ ತಪ್ಪಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ್ದರೆ ಅದನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. |
ಡಾಕರ್ ಮತ್ತು NestJS CLI ಏಕೀಕರಣವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು
ಉದಾಹರಣೆಗಳಲ್ಲಿ ಒದಗಿಸಲಾದ ಮೊದಲ ಡಾಕರ್ಫೈಲ್ ಅನ್ನು ಪರಿಹರಿಸುವುದರ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ MODULE_NOT_FOUND ಸೇವೆಗಳನ್ನು ಚಾಲನೆ ಮಾಡುವಾಗ NestJS CLI ಗೆ ಸಂಬಂಧಿಸಿದ ದೋಷ ದೃಢೀಕರಣ ಮತ್ತು ಮೀಸಲಾತಿಗಳು. ಅಭಿವೃದ್ಧಿ ಮತ್ತು ಉತ್ಪಾದನಾ ಹಂತಗಳಲ್ಲಿ ಅಗತ್ಯ ಜಾಗತಿಕ ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವ ಮೂಲಕ ಇದನ್ನು ಸಾಧಿಸಲಾಗುತ್ತದೆ. ಡಾಕರ್ಫೈಲ್ ಹಗುರವಾದದ್ದನ್ನು ಬಳಸುವ ಮೂಲಕ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ ನೋಡ್: ಆಲ್ಪೈನ್ ಚಿತ್ರ, ಇದು ಒಟ್ಟಾರೆ ಚಿತ್ರದ ಗಾತ್ರವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಇದು ನಂತರ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಅನ್ನು ಸ್ಥಾಪಿಸುತ್ತದೆ pnpm ಮತ್ತು ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಮಾಡ್ಯೂಲ್ಗಳು ಪರಿಸರದಲ್ಲಿ ಲಭ್ಯವಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಜಾಗತಿಕವಾಗಿ NestJS CLI.
CLI ಮತ್ತು ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿದ ನಂತರ, ಸ್ಕ್ರಿಪ್ಟ್ ಅಗತ್ಯವಿರುವ ಫೈಲ್ಗಳನ್ನು ನಕಲು ಮಾಡುತ್ತದೆ pack.json ಮತ್ತು ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ಗಳು, ಇದು ಪ್ರಾಜೆಕ್ಟ್ ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ನಿರ್ಣಾಯಕವಾಗಿದೆ. ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸಿದ ನಂತರ, ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಯೋಜನೆಯನ್ನು ನಿರ್ಮಿಸಲಾಗಿದೆ pnpm ರನ್ ನಿರ್ಮಾಣ, ಇದು ಮೂಲ ಕೋಡ್ ಅನ್ನು ವಿತರಿಸಬಹುದಾದ ಸ್ವರೂಪಕ್ಕೆ ಕಂಪೈಲ್ ಮಾಡುತ್ತದೆ. ಈ ಹಂತವು ಅವಶ್ಯಕವಾಗಿದೆ ಏಕೆಂದರೆ ಕಂಪೈಲ್ ಮಾಡಿದ ಔಟ್ಪುಟ್ ಅನ್ನು ಅಂತಿಮ ಉತ್ಪಾದನಾ ಪರಿಸರದಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ, ಅಭಿವೃದ್ಧಿ ಸಾಧನಗಳಿಂದ ಅನಗತ್ಯ ಓವರ್ಹೆಡ್ ಅನ್ನು ತಪ್ಪಿಸುತ್ತದೆ.
ಡಾಕರ್ಫೈಲ್ನ ಎರಡನೇ ಹಂತವು ಬಹು-ಹಂತದ ನಿರ್ಮಾಣ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಬಳಸುತ್ತದೆ. ಈ ಹಂತದಲ್ಲಿ, ಅಭಿವೃದ್ಧಿ ಹಂತದಿಂದ ಸಂಕಲಿಸಿದ ಔಟ್ಪುಟ್ ಅನ್ನು ತಾಜಾ ಉತ್ಪಾದನಾ ಪರಿಸರಕ್ಕೆ ನಕಲಿಸಲಾಗುತ್ತದೆ, ಅಂತಿಮ ಚಿತ್ರವು ಹಗುರವಾಗಿರುತ್ತದೆ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಗೆ ಹೊಂದುವಂತೆ ಮಾಡುತ್ತದೆ. ಈ ವಿಧಾನವು ಪ್ರೊಡಕ್ಷನ್ ಇಮೇಜ್ ಅನ್ನು ಚಿಕ್ಕದಾಗಿ ಮತ್ತು ಸುರಕ್ಷಿತವಾಗಿರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಏಕೆಂದರೆ ಇದು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಚಲಾಯಿಸಲು ಅಗತ್ಯವಿರುವದನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಿರುತ್ತದೆ. ಇದನ್ನು ಮಾಡುವ ಮೂಲಕ, ಉತ್ಪಾದನಾ ಪರಿಸರದಲ್ಲಿ ಒಳಗೊಂಡಿರುವ ಅಭಿವೃದ್ಧಿ ಅವಲಂಬನೆಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಸಂಭಾವ್ಯ ಸಂಘರ್ಷಗಳು ಅಥವಾ ಸಮಸ್ಯೆಗಳನ್ನು ವ್ಯವಸ್ಥೆಯು ತಡೆಯುತ್ತದೆ.
ಅಪ್ಲಿಕೇಶನ್ ಪ್ರಾರಂಭವನ್ನು ನಿರ್ವಹಿಸಲು, ದಿ ಸಿಎಂಡಿ ಡೈರೆಕ್ಟಿವ್ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಮುಖ್ಯ ಫೈಲ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ, ಇದು ಸಾಮಾನ್ಯವಾಗಿ ಇದೆ ಜಿಲ್ಲೆ ನಿರ್ಮಾಣ ಪ್ರಕ್ರಿಯೆಯ ನಂತರ ಡೈರೆಕ್ಟರಿ. ಡಾಕರ್ ಕಂಟೇನರ್ ಆಜ್ಞೆಯನ್ನು ನಡೆಸುತ್ತದೆ ನೋಡ್ dist/apps/auth/main.js (ಅಥವಾ ಮೀಸಲಾತಿ/main.js ಇತರ ಸೇವೆಗಾಗಿ), ಮೈಕ್ರೋಸರ್ವಿಸ್ ಅನ್ನು ಸರಿಯಾದ ಪರಿಸರದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು. ಈ ವಿಧಾನವು ಮೈಕ್ರೊ ಸರ್ವೀಸ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು ಅಳೆಯಲು ಅನುಮತಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ಪ್ರತಿಯೊಂದು ಸೇವೆಯನ್ನು ಅದರ ಸ್ವಂತ ಕಂಟೇನರ್ನಲ್ಲಿ ಎಲ್ಲಾ ಅವಲಂಬನೆಗಳನ್ನು ಸರಿಯಾಗಿ ನಿರ್ವಹಿಸಬಹುದು. ಒಟ್ಟಾರೆ ಸೆಟಪ್ ಡಾಕರ್ ಪರಿಣಾಮಕಾರಿಯಾಗಿ NestJS ಸೇವೆಗಳನ್ನು ನಡೆಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ, ಕಂಟೈನರೈಸೇಶನ್ ಸಮಯದಲ್ಲಿ ಎದುರಾಗುವ ಸಾಮಾನ್ಯ CLI ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸುತ್ತದೆ.
NestJS ಡಾಕರ್ ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಪರಿಹರಿಸುವಲ್ಲಿ ನೋಡ್ ಮತ್ತು ಡಾಕರ್ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳನ್ನು ಬಳಸುವಲ್ಲಿ ದೋಷ ಕಂಡುಬಂದಿಲ್ಲ
ಈ ಪರಿಹಾರವು @nestjs/cli/bin/nest.js ತಪ್ಪಿಹೋಗಿರುವ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಡಾಕರ್ನೊಂದಿಗೆ Node.js ಪರಿಸರವನ್ನು ಬಳಸುತ್ತದೆ.
// Dockerfile - Solution 1 (Ensure Global Dependencies are Installed)FROM node:alpine AS development
WORKDIR /usr/src/app
COPY package.json pnpm-lock.yaml tsconfig.json nest-cli.json ./
RUN npm install -g pnpm @nestjs/cli # Install NestJS CLI globally
RUN pnpm install
COPY . .
RUN pnpm run build auth
FROM node:alpine AS production
WORKDIR /usr/src/app
COPY --from=development /usr/src/app/dist ./dist
CMD ["node", "dist/apps/auth/main.js"]
ಅವಲಂಬನೆ ನಿರ್ವಹಣೆಯ ಮೂಲಕ NestJS ಡಾಕರ್ ಸೆಟಪ್ನಲ್ಲಿ ಮಿಸ್ಸಿಂಗ್ ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಸರಿಪಡಿಸಲಾಗುತ್ತಿದೆ
ಈ ವಿಧಾನವು ಅವಲಂಬನೆಗಳನ್ನು ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ನಿರ್ವಹಿಸುವುದರ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ, ಅಗತ್ಯವಿರುವ ಮಾಡ್ಯೂಲ್ಗಳು ಯಾವಾಗಲೂ ಇರುವುದನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ.
// Dockerfile - Solution 2 (Install CLI during both development and production stages)FROM node:alpine AS development
WORKDIR /usr/src/app
COPY package.json pnpm-lock.yaml tsconfig.json nest-cli.json ./
RUN npm install -g pnpm @nestjs/cli # Install CLI in dev environment
RUN pnpm install
COPY . .
RUN pnpm run build reservations
FROM node:alpine AS production
WORKDIR /usr/src/app
COPY package.json pnpm-lock.yaml ./
RUN npm install -g pnpm @nestjs/cli --prod # Install CLI in production too
COPY --from=development /usr/src/app/dist ./dist
CMD ["node", "dist/apps/reservations/main.js"]
ಡಾಕರ್ ಕಂಟೈನರ್ಗಳಲ್ಲಿ ಸರಿಯಾದ ಮಾಡ್ಯೂಲ್ ಸ್ಥಾಪನೆಯನ್ನು ಮೌಲ್ಯೀಕರಿಸಲು ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆಗಳು
ಅಗತ್ಯವಿರುವ ಮಾಡ್ಯೂಲ್ಗಳನ್ನು ವಿವಿಧ ಪರಿಸರಗಳಲ್ಲಿ ಸರಿಯಾಗಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಲು ಈ ಸ್ಕ್ರಿಪ್ಟ್ Jest ಅನ್ನು ಬಳಸಿಕೊಂಡು ಘಟಕ ಪರೀಕ್ಷೆಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ.
// jest.config.js - Unit Testsmodule.exports = {
testEnvironment: 'node',
moduleFileExtensions: ['js', 'json', 'ts'],
rootDir: './',
testRegex: '.spec.ts$',
transform: { '^.+\\.(t|j)s$': 'ts-jest' },
coverageDirectory: './coverage',
};
// sample.spec.ts - Check if Nest CLI is available in the Docker containerdescribe('Nest CLI Module Check', () => {
it('should have @nestjs/cli installed', async () => {
const { exec } = require('child_process');
exec('nest --version', (error, stdout, stderr) => {
expect(stdout).toContain('Nest'); // Verify CLI presence
});
});
});
ಡಾಕರೈಸ್ಡ್ NestJS ಸೇವೆಗಳಲ್ಲಿ ನೋಡ್ ಮಾಡ್ಯೂಲ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು
NestJS ನಲ್ಲಿ ಮೈಕ್ರೊ ಸರ್ವಿಸ್ ಆರ್ಕಿಟೆಕ್ಚರ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ನಿಮ್ಮ ಅವಲಂಬನೆಗಳನ್ನು ಡಾಕರ್ ಕಂಟೇನರ್ಗಳಲ್ಲಿ ಸರಿಯಾಗಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ ಮತ್ತು ನಿರ್ವಹಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಒಂದು ನಿರ್ಣಾಯಕ ಅಂಶವಾಗಿದೆ. ಡಾಕರೈಸ್ಡ್ ಪರಿಸರಗಳು ಕೆಲವೊಮ್ಮೆ ನಿರ್ವಹಣೆಯನ್ನು ಸಂಕೀರ್ಣಗೊಳಿಸಬಹುದು ನೋಡ್_ಮಾಡ್ಯೂಲ್ಗಳು, ವಿಶೇಷವಾಗಿ ಬಹು-ಹಂತದ ನಿರ್ಮಾಣಗಳನ್ನು ಬಳಸುವಾಗ, ಇದು ದೋಷಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು "ಮಾಡ್ಯೂಲ್ @nestjs/cli/bin/nest.js ಅನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗಲಿಲ್ಲ". ಜಾಗತಿಕ ಮಾಡ್ಯೂಲ್ಗಳಾದಾಗ ಈ ದೋಷವು ಸಾಮಾನ್ಯವಾಗಿ ಉದ್ಭವಿಸುತ್ತದೆ @nestjs/cli ಕಂಟೇನರ್ ಒಳಗೆ ಸರಿಯಾಗಿ ಅಳವಡಿಸಲಾಗಿಲ್ಲ.
ಇದನ್ನು ತಪ್ಪಿಸಲು, ಎಲ್ಲಾ ಅಗತ್ಯ ಮಾಡ್ಯೂಲ್ಗಳು ಅಭಿವೃದ್ಧಿ ಮತ್ತು ಉತ್ಪಾದನಾ ಹಂತಗಳಲ್ಲಿ ಇರುವುದನ್ನು ಖಾತ್ರಿಪಡಿಸುವ ರೀತಿಯಲ್ಲಿ ಡಾಕರ್ಫೈಲ್ ಅನ್ನು ರಚಿಸುವುದು ಮುಖ್ಯವಾಗಿದೆ. ಒಂದು ಸಾಮಾನ್ಯ ಪರಿಹಾರವೆಂದರೆ ಸ್ಪಷ್ಟವಾಗಿ ಸ್ಥಾಪಿಸುವುದು NestJS CLI ನಂತಹ ಆಜ್ಞೆಗಳನ್ನು ಚಲಾಯಿಸುವಾಗ ಕಾಣೆಯಾದ ಬೈನರಿಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಯಾವುದೇ ಸಮಸ್ಯೆಗಳನ್ನು ತಪ್ಪಿಸಲು ಎರಡೂ ಹಂತಗಳಲ್ಲಿ nest start ಅಥವಾ nest build. ನೀವು pnpm, npm, ಅಥವಾ ನೂಲು ಬಳಸುತ್ತಿದ್ದರೆ ಈ ವಿಧಾನವು ಪರಿಸರದಾದ್ಯಂತ ಸ್ಥಿರತೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ.
ಹೆಚ್ಚುವರಿಯಾಗಿ, ಉಪಕರಣಗಳನ್ನು ಬಳಸುವುದು pnpm ಡಾಕರ್ ಇಮೇಜ್ ಗಾತ್ರ ಮತ್ತು ಅವಲಂಬನೆ ಅನುಸ್ಥಾಪನ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸಬಹುದು. ಆದಾಗ್ಯೂ, ಡಾಕರ್ ಕಂಟೈನರ್ಗಳಲ್ಲಿ ವಿಭಿನ್ನ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ಗಳ ನಡುವೆ ಬದಲಾಯಿಸುವಾಗ ಅನೇಕ ಡೆವಲಪರ್ಗಳು ಸಮಸ್ಯೆಗಳನ್ನು ಎದುರಿಸುವುದರಿಂದ pnpm ಅನ್ನು ಜಾಗತಿಕವಾಗಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ ಎಂದು ನೀವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು. ನಿಮ್ಮ ಬಹು-ಹಂತದ ನಿರ್ಮಾಣಗಳನ್ನು ರಚಿಸುವುದು ಇದರಿಂದ ಅಗತ್ಯ ಫೈಲ್ಗಳು ಮಾತ್ರ (ಡಿಸ್ಟ್ ಫೋಲ್ಡರ್ ಮತ್ತು ನೋಡ್_ಮಾಡ್ಯೂಲ್ಗಳು) ಉತ್ಪಾದನಾ ಹಂತಕ್ಕೆ ನಕಲಿಸಲಾಗಿದೆ ನಿಯೋಜನೆ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸುಗಮಗೊಳಿಸಲು ಮತ್ತು ಕಾಣೆಯಾದ ಮಾಡ್ಯೂಲ್ಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಸಾಮಾನ್ಯ ದೋಷಗಳನ್ನು ತಪ್ಪಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
ಡಾಕರ್ ಮತ್ತು NestJS CLI ಇಂಟಿಗ್ರೇಷನ್ ಕುರಿತು ಸಾಮಾನ್ಯ ಪ್ರಶ್ನೆಗಳು
- ಡಾಕರ್ನಲ್ಲಿ ಕಾಣೆಯಾದ ಮಾಡ್ಯೂಲ್ ದೋಷಗಳನ್ನು ನಾನು ಹೇಗೆ ತಡೆಯಬಹುದು?
- ನೀವು ಸ್ಥಾಪಿಸುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ @nestjs/cli ಜಾಗತಿಕವಾಗಿ ಬಳಸಲಾಗುತ್ತಿದೆ npm install -g @nestjs/cli ಅಭಿವೃದ್ಧಿ ಮತ್ತು ಉತ್ಪಾದನೆಯ ಎರಡೂ ಹಂತಗಳಲ್ಲಿ.
- ನಾನು "ಮಾಡ್ಯೂಲ್ @nestjs/cli/bin/nest.js" ದೋಷವನ್ನು ಏಕೆ ಪಡೆಯುತ್ತಿದ್ದೇನೆ?
- ಯಾವಾಗ ಈ ದೋಷವು ಸಾಮಾನ್ಯವಾಗಿ ಸಂಭವಿಸುತ್ತದೆ NestJS CLI ನಿಮ್ಮ ಡಾಕರ್ ಕಂಟೈನರ್ನಲ್ಲಿ ಜಾಗತಿಕವಾಗಿ ಸ್ಥಾಪಿಸಲಾಗಿಲ್ಲ. ಸೇರಿಸಲಾಗುತ್ತಿದೆ RUN npm install -g @nestjs/cli ಇದನ್ನು ಪರಿಹರಿಸಬೇಕು.
- ನಾನು ಡಾಕರ್ ಕಂಟೈನರ್ಗಳಲ್ಲಿ npm ಅಥವಾ pnpm ಅನ್ನು ಬಳಸಬೇಕೇ?
- pnpm ಡಿಸ್ಕ್ ಜಾಗದ ವಿಷಯದಲ್ಲಿ ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿರಬಹುದು, ಆದರೆ ಇದನ್ನು ಜಾಗತಿಕವಾಗಿ ಕಂಟೇನರ್ನಲ್ಲಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ npm install -g pnpm ಅವಲಂಬನೆ ಸಮಸ್ಯೆಗಳನ್ನು ತಪ್ಪಿಸಲು.
- ನಾನು ಒಂದು ಡಾಕರ್ ಕಂಟೇನರ್ನಲ್ಲಿ ಬಹು ಸೇವೆಗಳನ್ನು ಚಲಾಯಿಸಬಹುದೇ?
- ತಾಂತ್ರಿಕವಾಗಿ ಸಾಧ್ಯವಾದರೂ, ಪ್ರತಿಯೊಂದನ್ನು ಚಲಾಯಿಸುವುದು ಉತ್ತಮ NestJS ಉತ್ತಮ ಪ್ರತ್ಯೇಕತೆ ಮತ್ತು ಸ್ಕೇಲೆಬಿಲಿಟಿಗಾಗಿ ತನ್ನದೇ ಆದ ಡಾಕರ್ ಕಂಟೇನರ್ನಲ್ಲಿ ಮೈಕ್ರೋ ಸರ್ವೀಸ್.
- ನನ್ನ ಡಾಕರ್ ಚಿತ್ರದ ಗಾತ್ರವನ್ನು ನಾನು ಹೇಗೆ ಕಡಿಮೆ ಮಾಡಬಹುದು?
- ಅಗತ್ಯ ಫೈಲ್ಗಳು ಮಾತ್ರ ಇಷ್ಟಪಡುವ ಬಹು-ಹಂತದ ನಿರ್ಮಾಣವನ್ನು ಬಳಸಿ dist ಮತ್ತು node_modules ಅಂತಿಮ ನಿರ್ಮಾಣ ಚಿತ್ರಕ್ಕೆ ನಕಲಿಸಲಾಗಿದೆ.
NestJS ಡಾಕರ್ ಕಾನ್ಫಿಗರೇಶನ್ನಲ್ಲಿ ಅಂತಿಮ ಆಲೋಚನೆಗಳು
ಡಾಕರೈಸ್ಡ್ NestJS ಮೈಕ್ರೋ ಸರ್ವಿಸ್ ಪರಿಸರದಲ್ಲಿ ಅವಲಂಬನೆಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು ಸವಾಲಾಗಿರಬಹುದು, ವಿಶೇಷವಾಗಿ ಜಾಗತಿಕ ಮಾಡ್ಯೂಲ್ಗಳು ಇಷ್ಟಪಟ್ಟಾಗ @nestjs/cli ತೊಡಗಿಸಿಕೊಂಡಿದ್ದಾರೆ. ಅಭಿವೃದ್ಧಿ ಮತ್ತು ಉತ್ಪಾದನಾ ಹಂತಗಳಲ್ಲಿ ಈ ಮಾಡ್ಯೂಲ್ಗಳನ್ನು ಸ್ಥಾಪಿಸುವುದು ನಿರ್ಣಾಯಕವಾಗಿದೆ.
ಸರಿಯಾದ ಬಹು-ಹಂತದ ಡಾಕರ್ಫೈಲ್ ಸೆಟಪ್ನೊಂದಿಗೆ, ನಾವು ಕಾಣೆಯಾದ ಮಾಡ್ಯೂಲ್ ದೋಷಗಳನ್ನು ತಪ್ಪಿಸಬಹುದು ಮತ್ತು ಉತ್ಪಾದನೆಗಾಗಿ ಧಾರಕವನ್ನು ಉತ್ತಮಗೊಳಿಸಬಹುದು. ಇದು ಸುಗಮ ಚಾಲನೆಯಲ್ಲಿರುವ ಸೇವೆಗಳನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ ದೃಢೀಕರಣ ಮತ್ತು ಮೀಸಲಾತಿಗಳು ಅವಲಂಬನೆ ಸಂಘರ್ಷಗಳಿಲ್ಲದೆ.
ಮೂಲಗಳು ಮತ್ತು ಉಲ್ಲೇಖಗಳು
- ಡಾಕರ್ ದಸ್ತಾವೇಜನ್ನು ಮತ್ತು ಸಮುದಾಯ ವೇದಿಕೆಗಳಿಂದ ಒಳನೋಟಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಈ ಲೇಖನವನ್ನು ರಚಿಸಲಾಗಿದೆ. ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ, ಅಧಿಕೃತ ಡಾಕರ್ ಸೈಟ್ಗೆ ಭೇಟಿ ನೀಡಿ ಡಾಕರ್ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ .
- NestJS CLI ಮತ್ತು ಮೈಕ್ರೋ ಸರ್ವಿಸ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಮಾರ್ಗದರ್ಶನವನ್ನು ಅಧಿಕೃತ NestJS ದಾಖಲಾತಿಯಲ್ಲಿ ಕಾಣಬಹುದು NestJS ಡಾಕ್ಯುಮೆಂಟೇಶನ್ .
- ಮಾಡ್ಯೂಲ್ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸುವ ಕುರಿತು ಹೆಚ್ಚಿನ ವಿವರಗಳನ್ನು StackOverflow ನಲ್ಲಿನ ಚರ್ಚೆಗಳಿಂದ ಅಳವಡಿಸಿಕೊಳ್ಳಲಾಗಿದೆ ಸ್ಟಾಕ್ಓವರ್ಫ್ಲೋ .