NestJS ਡੌਕਰ ਗਲਤੀ: ਮੋਡੀਊਲ @nestjs/cli/bin/nest.js ਨਹੀਂ ਮਿਲਿਆ

NestJS ਡੌਕਰ ਗਲਤੀ: ਮੋਡੀਊਲ @nestjs/cli/bin/nest.js ਨਹੀਂ ਮਿਲਿਆ
NestJS ਡੌਕਰ ਗਲਤੀ: ਮੋਡੀਊਲ @nestjs/cli/bin/nest.js ਨਹੀਂ ਮਿਲਿਆ

NestJS ਮਾਈਕਰੋ ਸਰਵਿਸਿਜ਼ ਵਿੱਚ ਡੌਕਰ ਮੁੱਦਿਆਂ ਦਾ ਨਿਪਟਾਰਾ ਕਰਨਾ

ਵਿਕਾਸ ਕਰਦੇ ਸਮੇਂ ਏ NestJS ਮਾਈਕ੍ਰੋਸਰਵਿਸ-ਅਧਾਰਿਤ RestAPI, ਡੌਕਰ ਕੰਟੇਨਰ ਦੇ ਅੰਦਰ ਚੱਲ ਰਹੀਆਂ ਸੇਵਾਵਾਂ ਕਈ ਵਾਰ ਅਚਾਨਕ ਸਮੱਸਿਆਵਾਂ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦੀਆਂ ਹਨ। ਅਜਿਹਾ ਇੱਕ ਮੁੱਦਾ ਉਦੋਂ ਪੈਦਾ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਡੌਕਰ ਨੂੰ ਲੱਭਣ ਵਿੱਚ ਅਸਮਰੱਥ ਹੁੰਦਾ ਹੈ @nestjs/cli/bin/nest.js ਮੋਡੀਊਲ, ਸੇਵਾ ਨੂੰ ਚੱਲਣ ਤੋਂ ਰੋਕ ਰਿਹਾ ਹੈ।

ਇਹ ਸਮੱਸਿਆ ਖਾਸ ਤੌਰ 'ਤੇ ਨਿਰਾਸ਼ਾਜਨਕ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਇੱਕ ਤੋਂ ਵੱਧ ਸੇਵਾਵਾਂ, ਜਿਵੇਂ ਕਿ ਪ੍ਰਮਾਣੀਕਰਨ ਅਤੇ ਰਿਜ਼ਰਵੇਸ਼ਨਾਂ ਨੂੰ ਸੈਟ ਅਪ ਕਰ ਚੁੱਕੇ ਹੋ, ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕੰਮ ਕਰ ਰਹੇ ਹੋ ਕਿ ਉਹ ਆਪਣੇ ਕੰਟੇਨਰਾਂ ਵਿੱਚ ਸੁਚਾਰੂ ਢੰਗ ਨਾਲ ਚੱਲ ਰਹੀਆਂ ਹਨ। ਦਾ ਸਾਹਮਣਾ ਏ MODULE_NOT_FOUND ਗਲਤੀ ਵਿਕਾਸ ਨੂੰ ਰੋਕ ਸਕਦੀ ਹੈ ਅਤੇ ਤੁਰੰਤ ਨਿਪਟਾਰੇ ਦੀ ਲੋੜ ਹੈ।

ਮੁੱਦਾ ਅਕਸਰ ਇਸ ਨਾਲ ਸਬੰਧਤ ਹੁੰਦਾ ਹੈ ਕਿ ਡੌਕਰ ਕੰਟੇਨਰ ਦੇ ਅੰਦਰ ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਿਆ ਜਾਂਦਾ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਏ ਨੋਡ: ਅਲਪਾਈਨ ਬੇਸ ਇਮੇਜ ਅਤੇ ਪੈਕੇਜ ਮੈਨੇਜਰ ਪਸੰਦ ਕਰਦੇ ਹਨ pnpm. ਗਲਤੀ ਲੌਗ ਆਮ ਤੌਰ 'ਤੇ ਕੰਟੇਨਰ ਦੇ ਗੁੰਮ ਮੋਡੀਊਲ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦਾ ਹੈ node_modules ਡਾਇਰੈਕਟਰੀ, ਜੋ ਸੇਵਾ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੀ ਹੈ।

ਇਸ ਗਾਈਡ ਵਿੱਚ, ਅਸੀਂ ਇਸ ਤਰੁੱਟੀ ਦੇ ਆਮ ਕਾਰਨਾਂ ਨੂੰ ਦੇਖਾਂਗੇ, ਸੰਭਾਵੀ ਹੱਲਾਂ ਬਾਰੇ ਚਰਚਾ ਕਰਾਂਗੇ, ਅਤੇ ਇਸਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਸਿਫ਼ਾਰਸ਼ਾਂ ਪ੍ਰਦਾਨ ਕਰਾਂਗੇ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਤੁਹਾਡੀਆਂ 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"] ਇਹ ਕਮਾਂਡ ਚਲਾਉਣ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ ਪ੍ਰਮਾਣਿਕਤਾ ਨਿਰਮਿਤ ਡਿਸਟ ਡਾਇਰੈਕਟਰੀ ਤੋਂ ਮੁੱਖ JavaScript ਫਾਈਲ ਨੂੰ ਸਿੱਧਾ ਚਲਾ ਕੇ ਉਤਪਾਦਨ ਵਿੱਚ ਸੇਵਾ।
testEnvironment: 'node' ਜੇਸਟ ਕੌਂਫਿਗਰੇਸ਼ਨ ਵਿੱਚ, ਇਹ ਕਮਾਂਡ ਟੈਸਟ ਵਾਤਾਵਰਨ ਨੂੰ Node.js ਵਿੱਚ ਸੈੱਟ ਕਰਦੀ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਕਿ ਯੂਨਿਟ ਟੈਸਟ ਬੈਕਐਂਡ ਵਾਤਾਵਰਨ ਦੀ ਸਹੀ ਢੰਗ ਨਾਲ ਨਕਲ ਕਰ ਸਕਦੇ ਹਨ।
describe('Nest CLI Module Check') ਜੇਸਟ ਵਿੱਚ, ਇਹ ਫੰਕਸ਼ਨ ਜਾਂਚ ਕਰਨ ਲਈ ਇੱਕ ਟੈਸਟ ਸੂਟ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਕਿ ਕੀ Nest CLI ਡੌਕਰ ਕੰਟੇਨਰ ਦੇ ਅੰਦਰ ਸਹੀ ਢੰਗ ਨਾਲ ਸਥਾਪਿਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹੋਏ ਕਿ ਮੋਡੀਊਲ ਨਿਰਭਰਤਾ ਹੱਲ ਹੋ ਗਈ ਹੈ।
exec('nest --version') ਇਹ ਤਸਦੀਕ ਕਰਨ ਲਈ ਟੈਸਟ ਦੇ ਅੰਦਰ ਇੱਕ ਸ਼ੈੱਲ ਕਮਾਂਡ ਚਲਾਉਂਦੀ ਹੈ ਆਲ੍ਹਣਾ CLI ਡੌਕਰ ਕੰਟੇਨਰ ਵਿੱਚ ਉਪਲਬਧ ਹੈ, ਇਹ ਪਤਾ ਲਗਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਮੋਡੀਊਲ ਗੁੰਮ ਹੈ ਜਾਂ ਗਲਤ ਸੰਰਚਿਤ ਹੈ।

ਡੌਕਰ ਅਤੇ NestJS CLI ਏਕੀਕਰਣ ਨੂੰ ਸਮਝਣਾ

ਉਦਾਹਰਣਾਂ ਵਿੱਚ ਪ੍ਰਦਾਨ ਕੀਤੀ ਗਈ ਪਹਿਲੀ ਡੌਕਰਫਾਈਲ ਨੂੰ ਹੱਲ ਕਰਨ 'ਤੇ ਕੇਂਦ੍ਰਤ ਕਰਦੀ ਹੈ MODULE_NOT_FOUND ਵਰਗੀਆਂ ਸੇਵਾਵਾਂ ਚਲਾਉਣ ਵੇਲੇ NestJS CLI ਨਾਲ ਸਬੰਧਤ ਗਲਤੀ ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ ਰਿਜ਼ਰਵੇਸ਼ਨ. ਇਹ ਯਕੀਨੀ ਬਣਾ ਕੇ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕਿ ਲੋੜੀਂਦੀ ਗਲੋਬਲ ਨਿਰਭਰਤਾ ਵਿਕਾਸ ਅਤੇ ਉਤਪਾਦਨ ਦੋਵਾਂ ਪੜਾਵਾਂ ਵਿੱਚ ਸਥਾਪਤ ਕੀਤੀ ਗਈ ਹੈ। ਡੌਕਰਫਾਈਲ ਲਾਈਟਵੇਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ ਨੋਡ: ਅਲਪਾਈਨ ਚਿੱਤਰ, ਜੋ ਸਮੁੱਚੇ ਚਿੱਤਰ ਦੇ ਆਕਾਰ ਨੂੰ ਘਟਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ। ਇਹ ਫਿਰ ਪੈਕੇਜ ਮੈਨੇਜਰ ਨੂੰ ਇੰਸਟਾਲ ਕਰਦਾ ਹੈ pnpm ਅਤੇ NestJS CLI ਵਿਸ਼ਵ ਪੱਧਰ 'ਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਸਾਰੇ ਲੋੜੀਂਦੇ ਮੋਡੀਊਲ ਵਾਤਾਵਰਨ ਵਿੱਚ ਉਪਲਬਧ ਹਨ।

ਇੱਕ ਵਾਰ CLI ਅਤੇ ਪੈਕੇਜ ਮੈਨੇਜਰ ਸਥਾਪਤ ਹੋ ਜਾਣ ਤੋਂ ਬਾਅਦ, ਸਕ੍ਰਿਪਟ ਲੋੜੀਂਦੀਆਂ ਫਾਈਲਾਂ ਦੀ ਨਕਲ ਕਰਦੀ ਹੈ ਜਿਵੇਂ ਕਿ package.json ਅਤੇ ਸੰਰਚਨਾ ਫਾਈਲਾਂ, ਜੋ ਕਿ ਪ੍ਰੋਜੈਕਟ ਨਿਰਭਰਤਾ ਨੂੰ ਸਥਾਪਿਤ ਕਰਨ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹਨ। ਨਿਰਭਰਤਾ ਸਥਾਪਤ ਹੋਣ ਤੋਂ ਬਾਅਦ, ਪ੍ਰੋਜੈਕਟ ਕਮਾਂਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਬਣਾਇਆ ਗਿਆ ਹੈ pnpm ਰਨ ਬਿਲਡ, ਜੋ ਕਿ ਸਰੋਤ ਕੋਡ ਨੂੰ ਵੰਡਣ ਯੋਗ ਫਾਰਮੈਟ ਵਿੱਚ ਕੰਪਾਇਲ ਕਰਦਾ ਹੈ। ਇਹ ਕਦਮ ਜ਼ਰੂਰੀ ਹੈ ਕਿਉਂਕਿ ਕੰਪਾਈਲ ਕੀਤੀ ਆਉਟਪੁੱਟ ਦੀ ਵਰਤੋਂ ਅੰਤਮ ਉਤਪਾਦਨ ਵਾਤਾਵਰਣ ਵਿੱਚ ਕੀਤੀ ਜਾਵੇਗੀ, ਵਿਕਾਸ ਸਾਧਨਾਂ ਤੋਂ ਬੇਲੋੜੇ ਓਵਰਹੈੱਡ ਤੋਂ ਬਚਦੇ ਹੋਏ।

ਡੌਕਰਫਾਈਲ ਦਾ ਦੂਜਾ ਪੜਾਅ ਇੱਕ ਮਲਟੀ-ਸਟੇਜ ਬਿਲਡ ਪ੍ਰਕਿਰਿਆ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇਸ ਪੜਾਅ ਵਿੱਚ, ਵਿਕਾਸ ਪੜਾਅ ਤੋਂ ਕੰਪਾਇਲ ਕੀਤੇ ਆਉਟਪੁੱਟ ਨੂੰ ਇੱਕ ਨਵੇਂ ਉਤਪਾਦਨ ਵਾਤਾਵਰਣ ਵਿੱਚ ਕਾਪੀ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਅੰਤਮ ਚਿੱਤਰ ਹਲਕਾ ਹੈ ਅਤੇ ਪ੍ਰਦਰਸ਼ਨ ਲਈ ਅਨੁਕੂਲ ਹੈ। ਇਹ ਵਿਧੀ ਉਤਪਾਦਨ ਚਿੱਤਰ ਨੂੰ ਛੋਟਾ ਅਤੇ ਸੁਰੱਖਿਅਤ ਰੱਖਣ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ, ਕਿਉਂਕਿ ਇਸ ਵਿੱਚ ਸਿਰਫ਼ ਉਹੀ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ ਜੋ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਚਲਾਉਣ ਲਈ ਜ਼ਰੂਰੀ ਹੈ। ਅਜਿਹਾ ਕਰਨ ਨਾਲ, ਸਿਸਟਮ ਸੰਭਾਵੀ ਟਕਰਾਅ ਜਾਂ ਵਿਕਾਸ ਨਿਰਭਰਤਾ ਨਾਲ ਸਬੰਧਤ ਮੁੱਦਿਆਂ ਨੂੰ ਉਤਪਾਦਨ ਦੇ ਵਾਤਾਵਰਣ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਤੋਂ ਰੋਕਦਾ ਹੈ।

ਐਪਲੀਕੇਸ਼ਨ ਸਟਾਰਟਅਪ ਨੂੰ ਸੰਭਾਲਣ ਲਈ, ਸੀ.ਐਮ.ਡੀ ਡਾਇਰੈਕਟਿਵ ਚਲਾਉਣ ਲਈ ਮੁੱਖ ਫਾਈਲ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ, ਜੋ ਆਮ ਤੌਰ 'ਤੇ ਵਿੱਚ ਸਥਿਤ ਹੁੰਦਾ ਹੈ ਜਿਲਾ ਬਿਲਡ ਪ੍ਰਕਿਰਿਆ ਤੋਂ ਬਾਅਦ ਡਾਇਰੈਕਟਰੀ. ਡੌਕਰ ਕੰਟੇਨਰ ਕਮਾਂਡ ਚਲਾਉਂਦਾ ਹੈ node dist/apps/auth/main.js (ਜਾਂ reservations/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.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 ਵਿੱਚ ਮਾਈਕ੍ਰੋਸਰਵਿਸ ਆਰਕੀਟੈਕਚਰ ਦੇ ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ, ਇੱਕ ਨਾਜ਼ੁਕ ਪਹਿਲੂ ਇਹ ਯਕੀਨੀ ਬਣਾ ਰਿਹਾ ਹੈ ਕਿ ਤੁਹਾਡੀਆਂ ਨਿਰਭਰਤਾਵਾਂ ਡੌਕਰ ਕੰਟੇਨਰਾਂ ਵਿੱਚ ਸਹੀ ਢੰਗ ਨਾਲ ਸਥਾਪਿਤ ਅਤੇ ਪ੍ਰਬੰਧਿਤ ਹਨ। ਡੌਕਰਾਈਜ਼ਡ ਵਾਤਾਵਰਨ ਕਈ ਵਾਰੀ ਦੇ ਪ੍ਰਬੰਧਨ ਨੂੰ ਗੁੰਝਲਦਾਰ ਬਣਾ ਸਕਦਾ ਹੈ node_modules, ਖਾਸ ਤੌਰ 'ਤੇ ਮਲਟੀ-ਸਟੇਜ ਬਿਲਡ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ, ਜਿਸ ਨਾਲ ਗਲਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ "@nestjs/cli/bin/nest.js ਮੋਡੀਊਲ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ". ਇਹ ਗਲਤੀ ਆਮ ਤੌਰ 'ਤੇ ਉਦੋਂ ਪੈਦਾ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਗਲੋਬਲ ਮੋਡੀਊਲ ਜਿਵੇਂ ਕਿ @nestjs/cli ਕੰਟੇਨਰ ਦੇ ਅੰਦਰ ਸਹੀ ਢੰਗ ਨਾਲ ਸਥਾਪਿਤ ਨਹੀਂ ਕੀਤੇ ਗਏ ਹਨ।

ਇਸ ਤੋਂ ਬਚਣ ਲਈ, ਡੌਕਰਫਾਈਲ ਨੂੰ ਇਸ ਤਰੀਕੇ ਨਾਲ ਢਾਂਚਾ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਸਾਰੇ ਲੋੜੀਂਦੇ ਮੋਡੀਊਲ ਵਿਕਾਸ ਅਤੇ ਉਤਪਾਦਨ ਦੋਵਾਂ ਪੜਾਵਾਂ ਵਿੱਚ ਮੌਜੂਦ ਹਨ। ਇੱਕ ਆਮ ਹੱਲ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਸਥਾਪਤ ਕਰਨਾ ਹੈ NestJS CLI ਦੋਵੇਂ ਪੜਾਵਾਂ ਦੇ ਦੌਰਾਨ ਕਮਾਂਡਾਂ ਚਲਾਉਣ ਵੇਲੇ ਗੁੰਮ ਬਾਈਨਰੀ ਨਾਲ ਸਬੰਧਤ ਕਿਸੇ ਵੀ ਮੁੱਦੇ ਤੋਂ ਬਚਣ ਲਈ nest start ਜਾਂ nest build. ਇਹ ਵਿਧੀ ਵਾਤਾਵਰਣ ਵਿੱਚ ਇਕਸਾਰਤਾ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ, ਭਾਵੇਂ ਤੁਸੀਂ pnpm, npm, ਜਾਂ ਧਾਗੇ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ।

ਇਸ ਤੋਂ ਇਲਾਵਾ, ਵਰਗੇ ਸਾਧਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ pnpm ਡੌਕਰ ਚਿੱਤਰ ਦਾ ਆਕਾਰ ਅਤੇ ਨਿਰਭਰਤਾ ਇੰਸਟਾਲੇਸ਼ਨ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾ ਸਕਦਾ ਹੈ. ਹਾਲਾਂਕਿ, ਤੁਹਾਨੂੰ ਇਹ ਵੀ ਯਕੀਨੀ ਬਣਾਉਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ pnpm ਗਲੋਬਲ ਤੌਰ 'ਤੇ ਸਥਾਪਤ ਹੈ, ਕਿਉਂਕਿ ਬਹੁਤ ਸਾਰੇ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਡੌਕਰ ਕੰਟੇਨਰਾਂ ਦੇ ਅੰਦਰ ਵੱਖ-ਵੱਖ ਪੈਕੇਜ ਪ੍ਰਬੰਧਕਾਂ ਵਿਚਕਾਰ ਸਵਿਚ ਕਰਨ ਵੇਲੇ ਸਮੱਸਿਆਵਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈਂਦਾ ਹੈ। ਤੁਹਾਡੇ ਮਲਟੀ-ਸਟੇਜ ਬਿਲਡ ਨੂੰ ਸਟ੍ਰਕਚਰ ਕਰਨਾ ਤਾਂ ਜੋ ਸਿਰਫ ਜ਼ਰੂਰੀ ਫਾਈਲਾਂ (ਜਿਵੇਂ ਕਿ ਡਿਸਟ ਫੋਲਡਰ ਅਤੇ node_modules) ਨੂੰ ਉਤਪਾਦਨ ਦੇ ਪੜਾਅ 'ਤੇ ਕਾਪੀ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜੋ ਕਿ ਤੈਨਾਤੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸੁਚਾਰੂ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਗੁੰਮ ਮੋਡੀਊਲਾਂ ਨਾਲ ਸਬੰਧਤ ਆਮ ਗਲਤੀਆਂ ਤੋਂ ਬਚ ਸਕਦਾ ਹੈ।

ਡੌਕਰ ਅਤੇ NestJS CLI ਏਕੀਕਰਣ 'ਤੇ ਆਮ ਸਵਾਲ

  1. ਮੈਂ ਡੌਕਰ ਵਿੱਚ ਗਾਇਬ ਮੋਡੀਊਲ ਗਲਤੀਆਂ ਨੂੰ ਕਿਵੇਂ ਰੋਕ ਸਕਦਾ ਹਾਂ?
  2. ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਸੀਂ ਇੰਸਟਾਲ ਕਰਦੇ ਹੋ @nestjs/cli ਵਿਸ਼ਵ ਪੱਧਰ 'ਤੇ ਵਰਤ ਰਿਹਾ ਹੈ npm install -g @nestjs/cli ਵਿਕਾਸ ਅਤੇ ਉਤਪਾਦਨ ਦੇ ਪੜਾਵਾਂ ਵਿੱਚ.
  3. ਮੈਨੂੰ "@nestjs/cli/bin/nest.js ਮੋਡੀਊਲ ਲੱਭ ਨਹੀਂ ਸਕਦਾ" ਗਲਤੀ ਕਿਉਂ ਮਿਲ ਰਹੀ ਹੈ?
  4. ਇਹ ਗਲਤੀ ਆਮ ਤੌਰ 'ਤੇ ਉਦੋਂ ਵਾਪਰਦੀ ਹੈ ਜਦੋਂ NestJS CLI ਤੁਹਾਡੇ ਡੌਕਰ ਕੰਟੇਨਰ ਵਿੱਚ ਗਲੋਬਲ ਤੌਰ 'ਤੇ ਸਥਾਪਤ ਨਹੀਂ ਹੈ। ਜੋੜ ਰਿਹਾ ਹੈ RUN npm install -g @nestjs/cli ਇਸ ਨੂੰ ਹੱਲ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ.
  5. ਕੀ ਮੈਨੂੰ ਡੌਕਰ ਕੰਟੇਨਰਾਂ ਵਿੱਚ npm ਜਾਂ pnpm ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ?
  6. pnpm ਡਿਸਕ ਸਪੇਸ ਦੇ ਰੂਪ ਵਿੱਚ ਵਧੇਰੇ ਕੁਸ਼ਲ ਹੋ ਸਕਦਾ ਹੈ, ਪਰ ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਇਹ ਕੰਟੇਨਰ ਵਿੱਚ ਗਲੋਬਲ ਤੌਰ 'ਤੇ ਸਥਾਪਿਤ ਹੈ npm install -g pnpm ਨਿਰਭਰਤਾ ਦੇ ਮੁੱਦਿਆਂ ਤੋਂ ਬਚਣ ਲਈ.
  7. ਕੀ ਮੈਂ ਇੱਕ ਡੌਕਰ ਕੰਟੇਨਰ ਵਿੱਚ ਕਈ ਸੇਵਾਵਾਂ ਚਲਾ ਸਕਦਾ ਹਾਂ?
  8. ਤਕਨੀਕੀ ਤੌਰ 'ਤੇ ਸੰਭਵ ਹੋਣ ਦੇ ਬਾਵਜੂਦ, ਹਰੇਕ ਨੂੰ ਚਲਾਉਣਾ ਬਿਹਤਰ ਹੈ NestJS ਬਿਹਤਰ ਆਈਸੋਲੇਸ਼ਨ ਅਤੇ ਸਕੇਲੇਬਿਲਟੀ ਲਈ ਇਸਦੇ ਆਪਣੇ ਡੌਕਰ ਕੰਟੇਨਰ ਵਿੱਚ ਮਾਈਕ੍ਰੋਸਰਵਿਸ.
  9. ਮੈਂ ਆਪਣੇ ਡੌਕਰ ਚਿੱਤਰ ਦੇ ਆਕਾਰ ਨੂੰ ਕਿਵੇਂ ਘਟਾ ਸਕਦਾ ਹਾਂ?
  10. ਇੱਕ ਮਲਟੀ-ਸਟੇਜ ਬਿਲਡ ਦੀ ਵਰਤੋਂ ਕਰੋ ਜਿੱਥੇ ਸਿਰਫ਼ ਜ਼ਰੂਰੀ ਫਾਈਲਾਂ ਹੀ ਪਸੰਦ ਕਰਦੀਆਂ ਹਨ dist ਅਤੇ node_modules ਅੰਤਮ ਉਤਪਾਦਨ ਚਿੱਤਰ ਵਿੱਚ ਨਕਲ ਕੀਤੇ ਗਏ ਹਨ।

NestJS ਡੌਕਰ ਕੌਂਫਿਗਰੇਸ਼ਨ 'ਤੇ ਅੰਤਮ ਵਿਚਾਰ

ਇੱਕ ਡੌਕਰਾਈਜ਼ਡ NestJS ਮਾਈਕ੍ਰੋਸਰਵਿਸ ਵਾਤਾਵਰਣ ਵਿੱਚ ਨਿਰਭਰਤਾ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ ਚੁਣੌਤੀਪੂਰਨ ਹੋ ਸਕਦਾ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਗਲੋਬਲ ਮੋਡੀਊਲ ਜਿਵੇਂ ਕਿ @nestjs/cli ਸ਼ਾਮਲ ਹਨ। ਵਿਕਾਸ ਅਤੇ ਉਤਪਾਦਨ ਦੋਵਾਂ ਪੜਾਵਾਂ ਦੌਰਾਨ ਇਹਨਾਂ ਮੋਡੀਊਲਾਂ ਨੂੰ ਸਥਾਪਿਤ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ।

ਸਹੀ ਮਲਟੀ-ਸਟੇਜ ਡੌਕਰਫਾਈਲ ਸੈਟਅਪ ਦੇ ਨਾਲ, ਅਸੀਂ ਗੁੰਮ ਮੋਡੀਊਲ ਗਲਤੀਆਂ ਤੋਂ ਬਚ ਸਕਦੇ ਹਾਂ ਅਤੇ ਕੰਟੇਨਰ ਨੂੰ ਉਤਪਾਦਨ ਲਈ ਅਨੁਕੂਲ ਬਣਾ ਸਕਦੇ ਹਾਂ। ਇਹ ਨਿਰਵਿਘਨ ਚੱਲ ਰਹੀਆਂ ਸੇਵਾਵਾਂ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ ਰਿਜ਼ਰਵੇਸ਼ਨ ਨਿਰਭਰਤਾ ਵਿਵਾਦਾਂ ਤੋਂ ਬਿਨਾਂ.

ਸਰੋਤ ਅਤੇ ਹਵਾਲੇ
  1. ਇਹ ਲੇਖ ਡੌਕਰ ਦਸਤਾਵੇਜ਼ਾਂ ਅਤੇ ਕਮਿਊਨਿਟੀ ਫੋਰਮਾਂ ਤੋਂ ਸੂਝ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਸੀ। ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ, ਅਧਿਕਾਰਤ ਡੌਕਰ ਸਾਈਟ 'ਤੇ ਜਾਓ ਡੌਕਰ ਦਸਤਾਵੇਜ਼ੀ .
  2. NestJS CLI ਅਤੇ ਮਾਈਕ੍ਰੋਸਰਵਿਸ ਪੈਟਰਨਾਂ ਨੂੰ ਸੰਭਾਲਣ ਬਾਰੇ ਮਾਰਗਦਰਸ਼ਨ ਅਧਿਕਾਰਤ NestJS ਦਸਤਾਵੇਜ਼ਾਂ 'ਤੇ ਪਾਇਆ ਜਾ ਸਕਦਾ ਹੈ NestJS ਦਸਤਾਵੇਜ਼ .
  3. ਮੋਡਿਊਲ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨ ਬਾਰੇ ਹੋਰ ਵੇਰਵਿਆਂ ਨੂੰ ਸਟੈਕਓਵਰਫਲੋ 'ਤੇ ਚਰਚਾਵਾਂ ਤੋਂ ਅਨੁਕੂਲਿਤ ਕੀਤਾ ਗਿਆ ਸੀ ਸਟੈਕ ਓਵਰਫਲੋ .