NestJS ਮਾਈਕਰੋ ਸਰਵਿਸਿਜ਼ ਵਿੱਚ ਡੌਕਰ ਮੁੱਦਿਆਂ ਦਾ ਨਿਪਟਾਰਾ ਕਰਨਾ
ਵਿਕਾਸ ਕਰਦੇ ਸਮੇਂ ਏ ਮਾਈਕ੍ਰੋਸਰਵਿਸ-ਅਧਾਰਿਤ RestAPI, ਡੌਕਰ ਕੰਟੇਨਰ ਦੇ ਅੰਦਰ ਚੱਲ ਰਹੀਆਂ ਸੇਵਾਵਾਂ ਕਈ ਵਾਰ ਅਚਾਨਕ ਸਮੱਸਿਆਵਾਂ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦੀਆਂ ਹਨ। ਅਜਿਹਾ ਇੱਕ ਮੁੱਦਾ ਉਦੋਂ ਪੈਦਾ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਡੌਕਰ ਨੂੰ ਲੱਭਣ ਵਿੱਚ ਅਸਮਰੱਥ ਹੁੰਦਾ ਹੈ ਮੋਡੀਊਲ, ਸੇਵਾ ਨੂੰ ਚੱਲਣ ਤੋਂ ਰੋਕ ਰਿਹਾ ਹੈ।
ਇਹ ਸਮੱਸਿਆ ਖਾਸ ਤੌਰ 'ਤੇ ਨਿਰਾਸ਼ਾਜਨਕ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਇੱਕ ਤੋਂ ਵੱਧ ਸੇਵਾਵਾਂ, ਜਿਵੇਂ ਕਿ ਪ੍ਰਮਾਣੀਕਰਨ ਅਤੇ ਰਿਜ਼ਰਵੇਸ਼ਨਾਂ ਨੂੰ ਸੈਟ ਅਪ ਕਰ ਚੁੱਕੇ ਹੋ, ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕੰਮ ਕਰ ਰਹੇ ਹੋ ਕਿ ਉਹ ਆਪਣੇ ਕੰਟੇਨਰਾਂ ਵਿੱਚ ਸੁਚਾਰੂ ਢੰਗ ਨਾਲ ਚੱਲ ਰਹੀਆਂ ਹਨ। ਦਾ ਸਾਹਮਣਾ ਏ ਗਲਤੀ ਵਿਕਾਸ ਨੂੰ ਰੋਕ ਸਕਦੀ ਹੈ ਅਤੇ ਤੁਰੰਤ ਨਿਪਟਾਰੇ ਦੀ ਲੋੜ ਹੈ।
ਮੁੱਦਾ ਅਕਸਰ ਇਸ ਨਾਲ ਸਬੰਧਤ ਹੁੰਦਾ ਹੈ ਕਿ ਡੌਕਰ ਕੰਟੇਨਰ ਦੇ ਅੰਦਰ ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਿਆ ਜਾਂਦਾ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਏ ਬੇਸ ਇਮੇਜ ਅਤੇ ਪੈਕੇਜ ਮੈਨੇਜਰ ਪਸੰਦ ਕਰਦੇ ਹਨ . ਗਲਤੀ ਲੌਗ ਆਮ ਤੌਰ 'ਤੇ ਕੰਟੇਨਰ ਦੇ ਗੁੰਮ ਮੋਡੀਊਲ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦਾ ਹੈ ਡਾਇਰੈਕਟਰੀ, ਜੋ ਸੇਵਾ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੀ ਹੈ।
ਇਸ ਗਾਈਡ ਵਿੱਚ, ਅਸੀਂ ਇਸ ਤਰੁੱਟੀ ਦੇ ਆਮ ਕਾਰਨਾਂ ਨੂੰ ਦੇਖਾਂਗੇ, ਸੰਭਾਵੀ ਹੱਲਾਂ ਬਾਰੇ ਚਰਚਾ ਕਰਾਂਗੇ, ਅਤੇ ਇਸਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਸਿਫ਼ਾਰਸ਼ਾਂ ਪ੍ਰਦਾਨ ਕਰਾਂਗੇ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਤੁਹਾਡੀਆਂ NestJS ਸੇਵਾਵਾਂ ਡੌਕਰ ਵਾਤਾਵਰਨ ਵਿੱਚ ਉਮੀਦ ਅਨੁਸਾਰ ਚੱਲਦੀਆਂ ਹਨ।
ਹੁਕਮ | ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ |
---|---|
@nestjs/cli | ਇਹ ਕਮਾਂਡ ਵਿਸ਼ਵ ਪੱਧਰ 'ਤੇ NestJS CLI ਨੂੰ ਸਥਾਪਿਤ ਕਰਦੀ ਹੈ, ਜੋ ਡੌਕਰ ਦੇ ਅੰਦਰ NestJS ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਚਲਾਉਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਇਹ ਬਚਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਗਲਤੀ |
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') | ਜੇਸਟ ਵਿੱਚ, ਇਹ ਫੰਕਸ਼ਨ ਜਾਂਚ ਕਰਨ ਲਈ ਇੱਕ ਟੈਸਟ ਸੂਟ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਡੌਕਰ ਕੰਟੇਨਰ ਦੇ ਅੰਦਰ ਸਹੀ ਢੰਗ ਨਾਲ ਸਥਾਪਿਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹੋਏ ਕਿ ਮੋਡੀਊਲ ਨਿਰਭਰਤਾ ਹੱਲ ਹੋ ਗਈ ਹੈ। |
exec('nest --version') | ਇਹ ਤਸਦੀਕ ਕਰਨ ਲਈ ਟੈਸਟ ਦੇ ਅੰਦਰ ਇੱਕ ਸ਼ੈੱਲ ਕਮਾਂਡ ਚਲਾਉਂਦੀ ਹੈ CLI ਡੌਕਰ ਕੰਟੇਨਰ ਵਿੱਚ ਉਪਲਬਧ ਹੈ, ਇਹ ਪਤਾ ਲਗਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਮੋਡੀਊਲ ਗੁੰਮ ਹੈ ਜਾਂ ਗਲਤ ਸੰਰਚਿਤ ਹੈ। |
ਡੌਕਰ ਅਤੇ NestJS CLI ਏਕੀਕਰਣ ਨੂੰ ਸਮਝਣਾ
ਉਦਾਹਰਣਾਂ ਵਿੱਚ ਪ੍ਰਦਾਨ ਕੀਤੀ ਗਈ ਪਹਿਲੀ ਡੌਕਰਫਾਈਲ ਨੂੰ ਹੱਲ ਕਰਨ 'ਤੇ ਕੇਂਦ੍ਰਤ ਕਰਦੀ ਹੈ ਵਰਗੀਆਂ ਸੇਵਾਵਾਂ ਚਲਾਉਣ ਵੇਲੇ NestJS CLI ਨਾਲ ਸਬੰਧਤ ਗਲਤੀ ਅਤੇ . ਇਹ ਯਕੀਨੀ ਬਣਾ ਕੇ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕਿ ਲੋੜੀਂਦੀ ਗਲੋਬਲ ਨਿਰਭਰਤਾ ਵਿਕਾਸ ਅਤੇ ਉਤਪਾਦਨ ਦੋਵਾਂ ਪੜਾਵਾਂ ਵਿੱਚ ਸਥਾਪਤ ਕੀਤੀ ਗਈ ਹੈ। ਡੌਕਰਫਾਈਲ ਲਾਈਟਵੇਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ ਨੋਡ: ਅਲਪਾਈਨ ਚਿੱਤਰ, ਜੋ ਸਮੁੱਚੇ ਚਿੱਤਰ ਦੇ ਆਕਾਰ ਨੂੰ ਘਟਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ। ਇਹ ਫਿਰ ਪੈਕੇਜ ਮੈਨੇਜਰ ਨੂੰ ਇੰਸਟਾਲ ਕਰਦਾ ਹੈ ਅਤੇ NestJS CLI ਵਿਸ਼ਵ ਪੱਧਰ 'ਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਸਾਰੇ ਲੋੜੀਂਦੇ ਮੋਡੀਊਲ ਵਾਤਾਵਰਨ ਵਿੱਚ ਉਪਲਬਧ ਹਨ।
ਇੱਕ ਵਾਰ CLI ਅਤੇ ਪੈਕੇਜ ਮੈਨੇਜਰ ਸਥਾਪਤ ਹੋ ਜਾਣ ਤੋਂ ਬਾਅਦ, ਸਕ੍ਰਿਪਟ ਲੋੜੀਂਦੀਆਂ ਫਾਈਲਾਂ ਦੀ ਨਕਲ ਕਰਦੀ ਹੈ ਜਿਵੇਂ ਕਿ ਅਤੇ ਸੰਰਚਨਾ ਫਾਈਲਾਂ, ਜੋ ਕਿ ਪ੍ਰੋਜੈਕਟ ਨਿਰਭਰਤਾ ਨੂੰ ਸਥਾਪਿਤ ਕਰਨ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹਨ। ਨਿਰਭਰਤਾ ਸਥਾਪਤ ਹੋਣ ਤੋਂ ਬਾਅਦ, ਪ੍ਰੋਜੈਕਟ ਕਮਾਂਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਬਣਾਇਆ ਗਿਆ ਹੈ , ਜੋ ਕਿ ਸਰੋਤ ਕੋਡ ਨੂੰ ਵੰਡਣ ਯੋਗ ਫਾਰਮੈਟ ਵਿੱਚ ਕੰਪਾਇਲ ਕਰਦਾ ਹੈ। ਇਹ ਕਦਮ ਜ਼ਰੂਰੀ ਹੈ ਕਿਉਂਕਿ ਕੰਪਾਈਲ ਕੀਤੀ ਆਉਟਪੁੱਟ ਦੀ ਵਰਤੋਂ ਅੰਤਮ ਉਤਪਾਦਨ ਵਾਤਾਵਰਣ ਵਿੱਚ ਕੀਤੀ ਜਾਵੇਗੀ, ਵਿਕਾਸ ਸਾਧਨਾਂ ਤੋਂ ਬੇਲੋੜੇ ਓਵਰਹੈੱਡ ਤੋਂ ਬਚਦੇ ਹੋਏ।
ਡੌਕਰਫਾਈਲ ਦਾ ਦੂਜਾ ਪੜਾਅ ਇੱਕ ਮਲਟੀ-ਸਟੇਜ ਬਿਲਡ ਪ੍ਰਕਿਰਿਆ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇਸ ਪੜਾਅ ਵਿੱਚ, ਵਿਕਾਸ ਪੜਾਅ ਤੋਂ ਕੰਪਾਇਲ ਕੀਤੇ ਆਉਟਪੁੱਟ ਨੂੰ ਇੱਕ ਨਵੇਂ ਉਤਪਾਦਨ ਵਾਤਾਵਰਣ ਵਿੱਚ ਕਾਪੀ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਅੰਤਮ ਚਿੱਤਰ ਹਲਕਾ ਹੈ ਅਤੇ ਪ੍ਰਦਰਸ਼ਨ ਲਈ ਅਨੁਕੂਲ ਹੈ। ਇਹ ਵਿਧੀ ਉਤਪਾਦਨ ਚਿੱਤਰ ਨੂੰ ਛੋਟਾ ਅਤੇ ਸੁਰੱਖਿਅਤ ਰੱਖਣ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ, ਕਿਉਂਕਿ ਇਸ ਵਿੱਚ ਸਿਰਫ਼ ਉਹੀ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ ਜੋ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਚਲਾਉਣ ਲਈ ਜ਼ਰੂਰੀ ਹੈ। ਅਜਿਹਾ ਕਰਨ ਨਾਲ, ਸਿਸਟਮ ਸੰਭਾਵੀ ਟਕਰਾਅ ਜਾਂ ਵਿਕਾਸ ਨਿਰਭਰਤਾ ਨਾਲ ਸਬੰਧਤ ਮੁੱਦਿਆਂ ਨੂੰ ਉਤਪਾਦਨ ਦੇ ਵਾਤਾਵਰਣ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਤੋਂ ਰੋਕਦਾ ਹੈ।
ਐਪਲੀਕੇਸ਼ਨ ਸਟਾਰਟਅਪ ਨੂੰ ਸੰਭਾਲਣ ਲਈ, ਡਾਇਰੈਕਟਿਵ ਚਲਾਉਣ ਲਈ ਮੁੱਖ ਫਾਈਲ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ, ਜੋ ਆਮ ਤੌਰ 'ਤੇ ਵਿੱਚ ਸਥਿਤ ਹੁੰਦਾ ਹੈ ਬਿਲਡ ਪ੍ਰਕਿਰਿਆ ਤੋਂ ਬਾਅਦ ਡਾਇਰੈਕਟਰੀ. ਡੌਕਰ ਕੰਟੇਨਰ ਕਮਾਂਡ ਚਲਾਉਂਦਾ ਹੈ (ਜਾਂ 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 ਵਿੱਚ ਮਾਈਕ੍ਰੋਸਰਵਿਸ ਆਰਕੀਟੈਕਚਰ ਦੇ ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ, ਇੱਕ ਨਾਜ਼ੁਕ ਪਹਿਲੂ ਇਹ ਯਕੀਨੀ ਬਣਾ ਰਿਹਾ ਹੈ ਕਿ ਤੁਹਾਡੀਆਂ ਨਿਰਭਰਤਾਵਾਂ ਡੌਕਰ ਕੰਟੇਨਰਾਂ ਵਿੱਚ ਸਹੀ ਢੰਗ ਨਾਲ ਸਥਾਪਿਤ ਅਤੇ ਪ੍ਰਬੰਧਿਤ ਹਨ। ਡੌਕਰਾਈਜ਼ਡ ਵਾਤਾਵਰਨ ਕਈ ਵਾਰੀ ਦੇ ਪ੍ਰਬੰਧਨ ਨੂੰ ਗੁੰਝਲਦਾਰ ਬਣਾ ਸਕਦਾ ਹੈ , ਖਾਸ ਤੌਰ 'ਤੇ ਮਲਟੀ-ਸਟੇਜ ਬਿਲਡ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ, ਜਿਸ ਨਾਲ ਗਲਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ . ਇਹ ਗਲਤੀ ਆਮ ਤੌਰ 'ਤੇ ਉਦੋਂ ਪੈਦਾ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਗਲੋਬਲ ਮੋਡੀਊਲ ਜਿਵੇਂ ਕਿ ਕੰਟੇਨਰ ਦੇ ਅੰਦਰ ਸਹੀ ਢੰਗ ਨਾਲ ਸਥਾਪਿਤ ਨਹੀਂ ਕੀਤੇ ਗਏ ਹਨ।
ਇਸ ਤੋਂ ਬਚਣ ਲਈ, ਡੌਕਰਫਾਈਲ ਨੂੰ ਇਸ ਤਰੀਕੇ ਨਾਲ ਢਾਂਚਾ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਸਾਰੇ ਲੋੜੀਂਦੇ ਮੋਡੀਊਲ ਵਿਕਾਸ ਅਤੇ ਉਤਪਾਦਨ ਦੋਵਾਂ ਪੜਾਵਾਂ ਵਿੱਚ ਮੌਜੂਦ ਹਨ। ਇੱਕ ਆਮ ਹੱਲ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਸਥਾਪਤ ਕਰਨਾ ਹੈ ਦੋਵੇਂ ਪੜਾਵਾਂ ਦੇ ਦੌਰਾਨ ਕਮਾਂਡਾਂ ਚਲਾਉਣ ਵੇਲੇ ਗੁੰਮ ਬਾਈਨਰੀ ਨਾਲ ਸਬੰਧਤ ਕਿਸੇ ਵੀ ਮੁੱਦੇ ਤੋਂ ਬਚਣ ਲਈ ਜਾਂ . ਇਹ ਵਿਧੀ ਵਾਤਾਵਰਣ ਵਿੱਚ ਇਕਸਾਰਤਾ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ, ਭਾਵੇਂ ਤੁਸੀਂ pnpm, npm, ਜਾਂ ਧਾਗੇ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ।
ਇਸ ਤੋਂ ਇਲਾਵਾ, ਵਰਗੇ ਸਾਧਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਡੌਕਰ ਚਿੱਤਰ ਦਾ ਆਕਾਰ ਅਤੇ ਨਿਰਭਰਤਾ ਇੰਸਟਾਲੇਸ਼ਨ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾ ਸਕਦਾ ਹੈ. ਹਾਲਾਂਕਿ, ਤੁਹਾਨੂੰ ਇਹ ਵੀ ਯਕੀਨੀ ਬਣਾਉਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ pnpm ਗਲੋਬਲ ਤੌਰ 'ਤੇ ਸਥਾਪਤ ਹੈ, ਕਿਉਂਕਿ ਬਹੁਤ ਸਾਰੇ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਡੌਕਰ ਕੰਟੇਨਰਾਂ ਦੇ ਅੰਦਰ ਵੱਖ-ਵੱਖ ਪੈਕੇਜ ਪ੍ਰਬੰਧਕਾਂ ਵਿਚਕਾਰ ਸਵਿਚ ਕਰਨ ਵੇਲੇ ਸਮੱਸਿਆਵਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈਂਦਾ ਹੈ। ਤੁਹਾਡੇ ਮਲਟੀ-ਸਟੇਜ ਬਿਲਡ ਨੂੰ ਸਟ੍ਰਕਚਰ ਕਰਨਾ ਤਾਂ ਜੋ ਸਿਰਫ ਜ਼ਰੂਰੀ ਫਾਈਲਾਂ (ਜਿਵੇਂ ਕਿ ਡਿਸਟ ਫੋਲਡਰ ਅਤੇ ) ਨੂੰ ਉਤਪਾਦਨ ਦੇ ਪੜਾਅ 'ਤੇ ਕਾਪੀ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜੋ ਕਿ ਤੈਨਾਤੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸੁਚਾਰੂ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਗੁੰਮ ਮੋਡੀਊਲਾਂ ਨਾਲ ਸਬੰਧਤ ਆਮ ਗਲਤੀਆਂ ਤੋਂ ਬਚ ਸਕਦਾ ਹੈ।
- ਮੈਂ ਡੌਕਰ ਵਿੱਚ ਗਾਇਬ ਮੋਡੀਊਲ ਗਲਤੀਆਂ ਨੂੰ ਕਿਵੇਂ ਰੋਕ ਸਕਦਾ ਹਾਂ?
- ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਸੀਂ ਇੰਸਟਾਲ ਕਰਦੇ ਹੋ ਵਿਸ਼ਵ ਪੱਧਰ 'ਤੇ ਵਰਤ ਰਿਹਾ ਹੈ ਵਿਕਾਸ ਅਤੇ ਉਤਪਾਦਨ ਦੇ ਪੜਾਵਾਂ ਵਿੱਚ.
- ਮੈਨੂੰ "@nestjs/cli/bin/nest.js ਮੋਡੀਊਲ ਲੱਭ ਨਹੀਂ ਸਕਦਾ" ਗਲਤੀ ਕਿਉਂ ਮਿਲ ਰਹੀ ਹੈ?
- ਇਹ ਗਲਤੀ ਆਮ ਤੌਰ 'ਤੇ ਉਦੋਂ ਵਾਪਰਦੀ ਹੈ ਜਦੋਂ ਤੁਹਾਡੇ ਡੌਕਰ ਕੰਟੇਨਰ ਵਿੱਚ ਗਲੋਬਲ ਤੌਰ 'ਤੇ ਸਥਾਪਤ ਨਹੀਂ ਹੈ। ਜੋੜ ਰਿਹਾ ਹੈ ਇਸ ਨੂੰ ਹੱਲ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ.
- ਕੀ ਮੈਨੂੰ ਡੌਕਰ ਕੰਟੇਨਰਾਂ ਵਿੱਚ npm ਜਾਂ pnpm ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ?
- ਡਿਸਕ ਸਪੇਸ ਦੇ ਰੂਪ ਵਿੱਚ ਵਧੇਰੇ ਕੁਸ਼ਲ ਹੋ ਸਕਦਾ ਹੈ, ਪਰ ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਇਹ ਕੰਟੇਨਰ ਵਿੱਚ ਗਲੋਬਲ ਤੌਰ 'ਤੇ ਸਥਾਪਿਤ ਹੈ ਨਿਰਭਰਤਾ ਦੇ ਮੁੱਦਿਆਂ ਤੋਂ ਬਚਣ ਲਈ.
- ਕੀ ਮੈਂ ਇੱਕ ਡੌਕਰ ਕੰਟੇਨਰ ਵਿੱਚ ਕਈ ਸੇਵਾਵਾਂ ਚਲਾ ਸਕਦਾ ਹਾਂ?
- ਤਕਨੀਕੀ ਤੌਰ 'ਤੇ ਸੰਭਵ ਹੋਣ ਦੇ ਬਾਵਜੂਦ, ਹਰੇਕ ਨੂੰ ਚਲਾਉਣਾ ਬਿਹਤਰ ਹੈ ਬਿਹਤਰ ਆਈਸੋਲੇਸ਼ਨ ਅਤੇ ਸਕੇਲੇਬਿਲਟੀ ਲਈ ਇਸਦੇ ਆਪਣੇ ਡੌਕਰ ਕੰਟੇਨਰ ਵਿੱਚ ਮਾਈਕ੍ਰੋਸਰਵਿਸ.
- ਮੈਂ ਆਪਣੇ ਡੌਕਰ ਚਿੱਤਰ ਦੇ ਆਕਾਰ ਨੂੰ ਕਿਵੇਂ ਘਟਾ ਸਕਦਾ ਹਾਂ?
- ਇੱਕ ਮਲਟੀ-ਸਟੇਜ ਬਿਲਡ ਦੀ ਵਰਤੋਂ ਕਰੋ ਜਿੱਥੇ ਸਿਰਫ਼ ਜ਼ਰੂਰੀ ਫਾਈਲਾਂ ਹੀ ਪਸੰਦ ਕਰਦੀਆਂ ਹਨ ਅਤੇ ਅੰਤਮ ਉਤਪਾਦਨ ਚਿੱਤਰ ਵਿੱਚ ਨਕਲ ਕੀਤੇ ਗਏ ਹਨ।
ਇੱਕ ਡੌਕਰਾਈਜ਼ਡ NestJS ਮਾਈਕ੍ਰੋਸਰਵਿਸ ਵਾਤਾਵਰਣ ਵਿੱਚ ਨਿਰਭਰਤਾ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ ਚੁਣੌਤੀਪੂਰਨ ਹੋ ਸਕਦਾ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਗਲੋਬਲ ਮੋਡੀਊਲ ਜਿਵੇਂ ਕਿ ਸ਼ਾਮਲ ਹਨ। ਵਿਕਾਸ ਅਤੇ ਉਤਪਾਦਨ ਦੋਵਾਂ ਪੜਾਵਾਂ ਦੌਰਾਨ ਇਹਨਾਂ ਮੋਡੀਊਲਾਂ ਨੂੰ ਸਥਾਪਿਤ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ।
ਸਹੀ ਮਲਟੀ-ਸਟੇਜ ਡੌਕਰਫਾਈਲ ਸੈਟਅਪ ਦੇ ਨਾਲ, ਅਸੀਂ ਗੁੰਮ ਮੋਡੀਊਲ ਗਲਤੀਆਂ ਤੋਂ ਬਚ ਸਕਦੇ ਹਾਂ ਅਤੇ ਕੰਟੇਨਰ ਨੂੰ ਉਤਪਾਦਨ ਲਈ ਅਨੁਕੂਲ ਬਣਾ ਸਕਦੇ ਹਾਂ। ਇਹ ਨਿਰਵਿਘਨ ਚੱਲ ਰਹੀਆਂ ਸੇਵਾਵਾਂ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਅਤੇ ਨਿਰਭਰਤਾ ਵਿਵਾਦਾਂ ਤੋਂ ਬਿਨਾਂ.
- ਇਹ ਲੇਖ ਡੌਕਰ ਦਸਤਾਵੇਜ਼ਾਂ ਅਤੇ ਕਮਿਊਨਿਟੀ ਫੋਰਮਾਂ ਤੋਂ ਸੂਝ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਸੀ। ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ, ਅਧਿਕਾਰਤ ਡੌਕਰ ਸਾਈਟ 'ਤੇ ਜਾਓ ਡੌਕਰ ਦਸਤਾਵੇਜ਼ੀ .
- NestJS CLI ਅਤੇ ਮਾਈਕ੍ਰੋਸਰਵਿਸ ਪੈਟਰਨਾਂ ਨੂੰ ਸੰਭਾਲਣ ਬਾਰੇ ਮਾਰਗਦਰਸ਼ਨ ਅਧਿਕਾਰਤ NestJS ਦਸਤਾਵੇਜ਼ਾਂ 'ਤੇ ਪਾਇਆ ਜਾ ਸਕਦਾ ਹੈ NestJS ਦਸਤਾਵੇਜ਼ .
- ਮੋਡਿਊਲ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨ ਬਾਰੇ ਹੋਰ ਵੇਰਵਿਆਂ ਨੂੰ ਸਟੈਕਓਵਰਫਲੋ 'ਤੇ ਚਰਚਾਵਾਂ ਤੋਂ ਅਨੁਕੂਲਿਤ ਕੀਤਾ ਗਿਆ ਸੀ ਸਟੈਕ ਓਵਰਫਲੋ .