Docker ਵਿੱਚ Node.js ਬੈਕਐਂਡ ਸ਼ੁਰੂ ਕਰਨਾ: ਇੱਕ ਸਮੱਸਿਆ ਨਿਪਟਾਰਾ ਗਾਈਡ
ਤੁਹਾਡੇ ਨੂੰ ਚਲਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਸਮੇਂ ਇੱਕ ਗਲਤੀ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ Node.js ਬੈਕਐਂਡ ਅੰਦਰ ਏ ਡੌਕਰ ਕੰਟੇਨਰ ਨਿਰਾਸ਼ਾਜਨਕ ਹੋ ਸਕਦਾ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਜਦੋਂ ਇਹ ਇੱਕ ਸਧਾਰਨ "ਗੁੰਮਸ਼ੁਦਾ ਸ਼ੁਰੂਆਤੀ ਸਕ੍ਰਿਪਟ" ਸੰਦੇਸ਼ ਦੇ ਕਾਰਨ ਹੁੰਦਾ ਹੈ। ਇਹ ਗਲਤੀ ਅਕਸਰ ਵਾਪਰਦੀ ਹੈ ਜਦੋਂ NPM ਤੁਹਾਡੇ ਸੈੱਟਅੱਪ ਵਿੱਚ ਸਹੀ ਸ਼ੁਰੂਆਤੀ ਕਮਾਂਡ ਨੂੰ ਨਹੀਂ ਲੱਭ ਸਕਦਾ। ਜੇ ਤੁਸੀਂ ਇਸ ਨਾਲ ਪ੍ਰਭਾਵਿਤ ਹੋਏ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਇਕੱਲੇ ਨਹੀਂ ਹੋ!
ਬਹੁਤ ਸਾਰੇ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਸਮੱਸਿਆ ਤੁਹਾਡੇ ਪੈਕੇਜ.json ਅਤੇ ਡੌਕਰ ਸੈਟਿੰਗਾਂ ਵਿਚਕਾਰ ਗਲਤ ਮਾਰਗਾਂ ਜਾਂ ਗਲਤ ਸੰਰਚਨਾਵਾਂ ਲਈ ਉਬਲਦੀ ਹੈ। ਨਾਲ ਨਜਿੱਠਣ ਵੇਲੇ ਇੱਕ ਛੋਟੇ ਵੇਰਵੇ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨਾ ਆਸਾਨ ਹੈ ਬਹੁ-ਪੜਾਅ ਦਾ ਨਿਰਮਾਣ, ਕੰਟੇਨਰਾਈਜ਼ੇਸ਼ਨ, ਅਤੇ ਕੌਂਫਿਗਰੇਸ਼ਨ ਫਾਈਲਾਂ। ਆਪਣੇ ਆਪ ਨੂੰ ਇਸ ਸਮੱਸਿਆ ਦਾ ਸਾਹਮਣਾ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਮੈਂ ਕਹਿ ਸਕਦਾ ਹਾਂ ਕਿ ਇਸਨੂੰ ਠੀਕ ਕਰਨ ਵਿੱਚ ਅਕਸਰ ਹਰੇਕ ਫਾਈਲ ਦੀ ਪਲੇਸਮੈਂਟ ਅਤੇ ਸਕ੍ਰਿਪਟਾਂ ਦੀ ਜਾਂਚ ਕਰਨਾ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ.
ਉਦਾਹਰਨ ਲਈ, ਮੈਂ ਇੱਕ ਵਾਰ ਇੱਕ ਬੈਕਐਂਡ ਤੈਨਾਤ ਕੀਤਾ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਮਹਿਸੂਸ ਕੀਤਾ ਕਿ ਮੇਰਾ ਡਿਸਟ ਫੋਲਡਰ ਸਹੀ ਢੰਗ ਨਾਲ ਮੈਪ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ, ਜਿਸ ਨਾਲ ਸਟਾਰਟ ਕਮਾਂਡ ਫੇਲ ਹੋ ਗਈ ਸੀ। ਸਧਾਰਨ ਟਵੀਕਸ ਇਹਨਾਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰ ਸਕਦੇ ਹਨ, ਪਰ ਸਹੀ ਨੂੰ ਲੱਭਣ ਲਈ ਧੀਰਜ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਜਾਂਚ ਕਰਨਾ ਕਿ ਕੀ ਸਾਰੀਆਂ ਨਿਰਭਰਤਾਵਾਂ ਅਤੇ ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਮੈਪ ਕੀਤਾ ਗਿਆ ਹੈ, ਡੀਬੱਗਿੰਗ ਦੇ ਘੰਟਿਆਂ ਨੂੰ ਬਚਾ ਸਕਦਾ ਹੈ।
ਇਸ ਗਾਈਡ ਵਿੱਚ, ਅਸੀਂ ਇਸ ਗਲਤੀ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਕੁਝ ਵਿਹਾਰਕ ਕਦਮਾਂ ਵਿੱਚ ਡੁਬਕੀ ਲਗਾਵਾਂਗੇ, ਖਾਸ ਤੌਰ 'ਤੇ ਜੇਕਰ ਤੁਸੀਂ ਡੇਟਾਬੇਸ ਦੇ ਨਾਲ-ਨਾਲ ਆਪਣਾ ਬੈਕਐਂਡ ਚਲਾ ਰਹੇ ਹੋ ਜਿਵੇਂ ਕਿ DynamoDB ਡੌਕਰ ਵਿੱਚ. ਚਲੋ ਤੁਹਾਡੇ ਬੈਕਐਂਡ ਨੂੰ ਸੁਚਾਰੂ ਢੰਗ ਨਾਲ ਚਲਾਉਣ ਲਈ "ਗੁੰਮਸ਼ੁਦਾ ਸ਼ੁਰੂਆਤੀ ਸਕ੍ਰਿਪਟ" ਗਲਤੀ ਦਾ ਨਿਪਟਾਰਾ ਕਰੀਏ!
ਹੁਕਮ | ਵਰਣਨ |
---|---|
CMD ["node", "dist/server.js"] | ਸ਼ੁਰੂਆਤੀ ਸਮੇਂ ਡੌਕਰ ਕੰਟੇਨਰ ਵਿੱਚ ਚੱਲਣ ਵਾਲੀ ਪ੍ਰਾਇਮਰੀ ਕਮਾਂਡ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ। ਇੱਥੇ, ਇਹ ਡੌਕਰ ਨੂੰ ਡਿਸਟ ਫੋਲਡਰ ਦੇ ਅੰਦਰ ਸਰਵਰ.js ਨੂੰ ਐਗਜ਼ੀਕਿਊਟ ਕਰਕੇ ਐਪਲੀਕੇਸ਼ਨ ਸ਼ੁਰੂ ਕਰਨ ਦਾ ਨਿਰਦੇਸ਼ ਦਿੰਦਾ ਹੈ, ਗੁੰਮ ਸ਼ੁਰੂਆਤੀ ਸਕ੍ਰਿਪਟ ਇਹ ਯਕੀਨੀ ਬਣਾ ਕੇ ਮੁੱਦਾ ਹੈ ਕਿ ਡੌਕਰ ਜਾਣਦਾ ਹੈ ਕਿ ਕਿਹੜੀ ਸਕ੍ਰਿਪਟ ਚਲਾਉਣੀ ਹੈ। |
WORKDIR /app | ਕੰਟੇਨਰ ਦੇ ਅੰਦਰ ਕੰਮ ਕਰਨ ਵਾਲੀ ਡਾਇਰੈਕਟਰੀ ਨੂੰ /ਐਪ 'ਤੇ ਸੈੱਟ ਕਰਦਾ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਅਗਲੀਆਂ ਕਮਾਂਡਾਂ ਵਿੱਚ ਸਾਰੇ ਫਾਈਲ ਮਾਰਗ ਇਸ ਡਾਇਰੈਕਟਰੀ ਦਾ ਹਵਾਲਾ ਦਿੰਦੇ ਹਨ, ਡੌਕਰ ਦੇ ਅੰਦਰ ਬਿਲਡ ਅਤੇ ਰਨਟਾਈਮ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨੂੰ ਸੁਚਾਰੂ ਬਣਾਉਣਾ। |
COPY --from=builder /app/dist ./dist | ਬਿਲਡਰ ਪੜਾਅ ਵਿੱਚ ਡਿਸਟ ਫੋਲਡਰ ਤੋਂ ਰਨਟਾਈਮ ਵਾਤਾਵਰਣ ਦੀ ਡਿਸਟ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਬਿਲਟ ਫਾਈਲਾਂ ਦੀ ਨਕਲ ਕਰਦਾ ਹੈ। ਇਹ ਕਮਾਂਡ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਕੰਪਾਇਲ ਕੀਤੀਆਂ TypeScript ਫਾਈਲਾਂ ਕੰਟੇਨਰ ਵਿੱਚ ਉਪਲਬਧ ਹਨ। |
RUN npm install --omit=dev | dev ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਛੱਡ ਕੇ ਸਿਰਫ ਉਤਪਾਦਨ ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਸਥਾਪਿਤ ਕਰਦਾ ਹੈ। ਇਹ ਕਮਾਂਡ ਉਤਪਾਦਨ ਦੇ ਨਿਰਮਾਣ ਲਈ ਅਨੁਕੂਲਿਤ ਹੈ, ਕੰਟੇਨਰ ਦੇ ਅੰਤਮ ਆਕਾਰ ਨੂੰ ਘਟਾਉਣ ਅਤੇ ਵਿਕਾਸ ਸਾਧਨਾਂ ਨੂੰ ਛੱਡ ਕੇ ਸੁਰੱਖਿਆ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ। |
healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000"] | ਇਹ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਇੱਕ ਸਿਹਤ ਜਾਂਚ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਡੌਕਰ ਦੇ ਅੰਦਰ ਡਾਇਨਾਮੋਡੀਬੀ ਸੇਵਾ ਚੱਲ ਰਹੀ ਹੈ। ਇਹ ਖਾਸ ਲੋਕਲ ਐਂਡਪੁਆਇੰਟ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ ਕਰਲ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਬੈਕਐਂਡ ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਸੇਵਾ ਉਪਲਬਧ ਹੈ। |
depends_on: | docker-compose.yml ਵਿੱਚ ਨਿਰਭਰਤਾ ਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ। ਇੱਥੇ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਬੈਕਐਂਡ ਸੇਵਾ DynamoDB ਦੇ ਸ਼ੁਰੂ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰਦੀ ਹੈ, ਗਲਤੀਆਂ ਨੂੰ ਅਣ-ਤਿਆਰ ਸੇਵਾ ਨਾਲ ਜੁੜਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਰੋਕਦੀ ਹੈ। |
EXPOSE 3001 | ਡੌਕਰ ਕੰਟੇਨਰ ਦੇ ਅੰਦਰ ਪੋਰਟ 3001 ਨੂੰ ਖੋਲ੍ਹਦਾ ਹੈ, ਇਸ ਪੋਰਟ 'ਤੇ ਬੈਕਐਂਡ ਸੇਵਾ ਨੂੰ ਪਹੁੰਚਯੋਗ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਕਮਾਂਡ ਨੈੱਟਵਰਕਿੰਗ ਸਥਾਪਤ ਕਰਨ ਅਤੇ ਬਾਹਰੀ ਸੇਵਾਵਾਂ ਜਾਂ ਹੋਰ ਕੰਟੇਨਰਾਂ ਨੂੰ ਬੈਕਐਂਡ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ ਲੋੜੀਂਦੀ ਹੈ। |
test('dist folder exists', ...) | ਇੱਕ ਜੈਸਟ ਯੂਨਿਟ ਟੈਸਟ ਜੋ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਡਿਸਟ ਫੋਲਡਰ ਸਹੀ ਢੰਗ ਨਾਲ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਸੀ। ਇਹ ਟੈਸਟ ਇਹ ਪੁਸ਼ਟੀ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਕਿ ਬਿਲਡ ਸਟੈਪ ਸਫਲ ਹੋਇਆ ਹੈ, ਡਿਸਟ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਗੁੰਮ ਹੋਈਆਂ ਫਾਈਲਾਂ ਨਾਲ ਸੰਭਾਵੀ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਫੜਦਾ ਹੈ। |
expect(packageJson.scripts.start) | ਇੱਕ ਜੈਸਟ ਟੈਸਟ ਲਾਈਨ ਜੋ ਪੁਸ਼ਟੀ ਕਰਦੀ ਹੈ ਕਿ ਸ਼ੁਰੂਆਤੀ ਸਕ੍ਰਿਪਟ package.json ਵਿੱਚ ਮੌਜੂਦ ਹੈ। ਇਹ ਡਿਪਲਾਇਮੈਂਟ ਤੋਂ ਪਹਿਲਾਂ ਸੰਰਚਨਾ ਦੀ ਸ਼ੁੱਧਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾ ਕੇ ਰਨਟਾਈਮ ਗਲਤੀਆਂ ਨੂੰ ਗੁੰਮਸ਼ੁਦਾ ਸ਼ੁਰੂਆਤੀ ਕਮਾਂਡਾਂ ਤੋਂ ਰੋਕਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ। |
Node.js ਅਤੇ ਡਾਟਾਬੇਸ ਕਨੈਕਸ਼ਨ ਲਈ ਡੌਕਰ ਸੰਰਚਨਾ
ਉਪਰੋਕਤ ਉਦਾਹਰਨ ਵਿੱਚ, ਡੌਕਰ ਸੈਟਅਪ ਇੱਕ ਮਲਟੀ-ਸਟੇਜ ਬਿਲਡ ਦਾ ਲਾਭ ਉਠਾਉਂਦਾ ਹੈ, ਜੋ ਕਿ ਕੁਸ਼ਲ ਉਤਪਾਦਨ-ਤਿਆਰ ਕੰਟੇਨਰ ਬਣਾਉਣ ਲਈ ਉਪਯੋਗੀ ਹੈ। ਪਹਿਲਾ ਪੜਾਅ, "ਬਿਲਡਰ" ਵਜੋਂ ਪਰਿਭਾਸ਼ਿਤ, ਨਿਰਭਰਤਾ ਨੂੰ ਸਥਾਪਿਤ ਕਰਦਾ ਹੈ ਅਤੇ ਕੰਪਾਇਲ ਕਰਦਾ ਹੈ TypeScript ਵਿੱਚ JavaScript ਲਈ ਫਾਈਲਾਂ ਜਿਲਾ ਫੋਲਡਰ। ਇਹ ਕਦਮ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਕੰਪਾਇਲ ਕੀਤਾ ਕੋਡ ਬੇਲੋੜੀ dev ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕੀਤੇ ਬਿਨਾਂ ਉਤਪਾਦਨ ਲਈ ਤਿਆਰ ਹੈ। ਇੱਕ ਵਾਰ ਬਣਾਇਆ ਗਿਆ, ਦੂਜਾ ਪੜਾਅ (ਰਨਟਾਈਮ) ਕੰਟੇਨਰ ਦੇ ਆਕਾਰ ਨੂੰ ਘੱਟ ਕਰਦੇ ਹੋਏ, ਸਿਰਫ ਕੰਪਾਇਲ ਕੀਤੀਆਂ ਫਾਈਲਾਂ ਅਤੇ ਉਤਪਾਦਨ ਨਿਰਭਰਤਾਵਾਂ ਦੀ ਨਕਲ ਕਰਦਾ ਹੈ। ਇਹ ਸੈੱਟਅੱਪ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਮਦਦਗਾਰ ਹੁੰਦਾ ਹੈ ਜੇਕਰ ਤੁਸੀਂ ਅਕਸਰ ਕਲਾਉਡ ਵਾਤਾਵਰਨ ਵਿੱਚ ਤੈਨਾਤ ਕਰ ਰਹੇ ਹੋ ਜਿੱਥੇ ਹਰ ਇੱਕ ਔਪਟੀਮਾਈਜੇਸ਼ਨ ਦੀ ਗਿਣਤੀ ਹੁੰਦੀ ਹੈ! 🚀
ਦ ਵਰਕਡਾਇਰ ਦੋਵਾਂ ਪੜਾਵਾਂ ਵਿੱਚ ਕਮਾਂਡ ਕੰਟੇਨਰ ਦੀ ਕਾਰਜਸ਼ੀਲ ਡਾਇਰੈਕਟਰੀ ਨੂੰ /app ਤੇ ਸੈੱਟ ਕਰਦੀ ਹੈ। ਇਹ ਫਾਈਲ ਮਾਰਗਾਂ ਨੂੰ ਸਰਲ ਬਣਾਉਂਦਾ ਹੈ ਅਤੇ ਇਸ ਡਾਇਰੈਕਟਰੀ ਦੇ ਆਲੇ ਦੁਆਲੇ ਸਾਰੀਆਂ ਕਾਰਵਾਈਆਂ ਨੂੰ ਸੰਗਠਿਤ ਕਰਦਾ ਹੈ। ਇਸ ਤੋਂ ਬਾਅਦ, ਕਾਪੀ ਕਰੋ ਹਦਾਇਤਾਂ ਖਾਸ ਫਾਈਲਾਂ ਨੂੰ ਹੋਸਟ ਮਸ਼ੀਨ ਤੋਂ ਕੰਟੇਨਰ ਵਿੱਚ ਲੈ ਜਾਂਦੀਆਂ ਹਨ। ਪਹਿਲੇ ਪੜਾਅ ਵਿੱਚ, ਪੈਕੇਜ*.json ਫਾਈਲਾਂ ਅਤੇ tsconfig.json ਦੀ ਨਕਲ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਤਾਂ ਜੋ ਨਿਰਭਰਤਾ ਇੰਸਟਾਲੇਸ਼ਨ ਅਤੇ ਟਾਈਪਸਕ੍ਰਿਪਟ ਸੰਕਲਨ, ਅਤੇ npm ਇੰਸਟਾਲ ਚਲਾਓ ਅਤੇ RUN npm ਰਨ ਬਿਲਡ ਕਮਾਂਡਾਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੀਆਂ ਹਨ ਕਿ ਸਭ ਕੁਝ ਸਹੀ ਢੰਗ ਨਾਲ ਸੈੱਟਅੱਪ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ ਸੈੱਟਅੱਪ ਸਾਰੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਕਾਪੀ ਅਤੇ ਕੌਂਫਿਗਰ ਕੀਤੇ ਜਾਣ ਨੂੰ ਯਕੀਨੀ ਬਣਾ ਕੇ ਗੁੰਮਸ਼ੁਦਾ ਸ਼ੁਰੂਆਤੀ ਸਕ੍ਰਿਪਟਾਂ ਵਰਗੀਆਂ ਸਮੱਸਿਆਵਾਂ ਤੋਂ ਬਚਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ।
ਦ docker-compose.yml ਫਾਇਲ ਬੈਕਐਂਡ ਨੂੰ ਨਾਲ ਜੋੜਦੀ ਹੈ DynamoDB, ਜੋ ਕਿ ਸਥਾਨਕ ਟੈਸਟਿੰਗ ਅਤੇ ਵਿਕਾਸ ਲਈ ਜ਼ਰੂਰੀ ਹੈ। ਦ ਨਿਰਭਰ_ਤੇ ਵਿਕਲਪ ਡੌਕਰ ਨੂੰ ਬੈਕਐਂਡ ਸੇਵਾ ਤੋਂ ਪਹਿਲਾਂ ਡਾਇਨਾਮੋਡੀਬੀ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਕਹਿੰਦਾ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਡਾਟਾਬੇਸ ਬੈਕਐਂਡ ਤੋਂ ਕਿਸੇ ਵੀ ਕੁਨੈਕਸ਼ਨ ਕੋਸ਼ਿਸ਼ਾਂ ਲਈ ਤਿਆਰ ਹੈ। ਅਸਲ-ਸੰਸਾਰ ਦੇ ਦ੍ਰਿਸ਼ਾਂ ਵਿੱਚ, ਅਜਿਹੀ ਨਿਰਭਰਤਾ ਸੈਟਅਪ ਨਾ ਹੋਣ ਨਾਲ ਕਨੈਕਟੀਵਿਟੀ ਸਮੱਸਿਆਵਾਂ ਪੈਦਾ ਹੋ ਸਕਦੀਆਂ ਹਨ ਜਦੋਂ ਬੈਕਐਂਡ ਡੇਟਾਬੇਸ ਤੋਂ ਪਹਿਲਾਂ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ, ਨਤੀਜੇ ਵਜੋਂ ਨਿਰਾਸ਼ਾਜਨਕ ਗਲਤੀਆਂ ਹੁੰਦੀਆਂ ਹਨ। ਦ ਸਿਹਤ ਜਾਂਚ ਕਮਾਂਡ ਟੈਸਟ ਕਰਦਾ ਹੈ ਕਿ ਕੀ DynamoDB ਐਂਡਪੁਆਇੰਟ ਨੂੰ ਪਿੰਗ ਕਰਕੇ ਪਹੁੰਚਯੋਗ ਹੈ, ਕੁਨੈਕਸ਼ਨ ਸਥਾਪਤ ਹੋਣ ਤੱਕ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਕੇ ਕਿ ਸੇਵਾਵਾਂ ਦਾ ਸਹੀ ਕ੍ਰਮ ਵਿੱਚ ਸ਼ੁਰੂ ਹੋਣਾ ਸਮੇਂ ਦੀ ਬਚਤ ਹੁੰਦੀ ਹੈ।
ਅੰਤ ਵਿੱਚ, package.json ਵਿੱਚ, ਅਸੀਂ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਹੈ ਸ਼ੁਰੂ ਕਰੋ ਸਕ੍ਰਿਪਟ ਦੇ ਰੂਪ ਵਿੱਚ node dist/server.js. ਇਹ ਕਮਾਂਡ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਕਿ NPM ਨੂੰ ਪਤਾ ਹੈ ਕਿ ਕੰਟੇਨਰ ਵਿੱਚ ਕਿਹੜੀ ਫਾਈਲ ਚਲਾਉਣੀ ਹੈ, "ਗੁੰਮਸ਼ੁਦਾ ਸ਼ੁਰੂਆਤੀ ਸਕ੍ਰਿਪਟ" ਗਲਤੀ ਤੋਂ ਬਚਣ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ। ਟਾਈਪਸਕ੍ਰਿਪਟ ਕੋਡ ਨੂੰ ਕੰਪਾਇਲ ਕਰਨ ਲਈ ਇੱਕ ਬਿਲਡ ਕਮਾਂਡ ਅਤੇ ਡਿਸਟ ਫੋਲਡਰ ਨੂੰ ਹਟਾਉਣ ਲਈ ਇੱਕ ਸਾਫ਼ ਕਮਾਂਡ ਵੀ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹੋਏ ਕਿ ਹਰ ਤੈਨਾਤੀ ਤਾਜ਼ਾ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ। ਇਹਨਾਂ ਵਰਗੀਆਂ npm ਸਕ੍ਰਿਪਟਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਸੈਟਅਪ ਨੂੰ ਵਧੇਰੇ ਭਰੋਸੇਮੰਦ ਬਣਾਉਂਦਾ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਜਦੋਂ ਡੌਕਰ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਅਨੁਮਾਨ ਲਗਾਉਣ ਯੋਗ ਮਾਰਗ ਅਤੇ ਕਾਰਵਾਈਆਂ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦਾ ਹੈ। ਡੌਕਰ, ਡੌਕਰ ਕੰਪੋਜ਼, ਅਤੇ NPM ਸਕ੍ਰਿਪਟਾਂ ਦੀ ਇਹ ਵਿਆਪਕ ਸੰਰਚਨਾ ਇੱਕ ਸੁਚਾਰੂ ਵਿਕਾਸ-ਤੋਂ-ਉਤਪਾਦਨ ਵਰਕਫਲੋ ਬਣਾਉਣ ਲਈ ਮਿਲ ਕੇ ਕੰਮ ਕਰਦੀ ਹੈ।
ਹੱਲ 1: ਸਹੀ ਫਾਈਲ ਕਾਪੀ ਕਰਨ ਲਈ ਡੌਕਰਫਾਈਲ ਅਤੇ Package.json ਨੂੰ ਐਡਜਸਟ ਕਰਨਾ
ਇਹ ਹੱਲ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ Docker ਅਤੇ Node.js ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਕਿ ਫਾਈਲਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਕਾਪੀ ਕੀਤਾ ਗਿਆ ਹੈ ਜਿਲਾ ਫੋਲਡਰ ਅਤੇ NPM ਨੂੰ ਲੱਭ ਸਕਦਾ ਹੈ ਸ਼ੁਰੂ ਕਰੋ ਸਕ੍ਰਿਪਟ
# Dockerfile
FROM node:18 AS builder
WORKDIR /app
# Copy necessary config files and install dependencies
COPY package*.json tsconfig.json ./
RUN npm install
# Copy all source files and build the project
COPY . .
RUN npm run build
# Production stage
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/package*.json ./
RUN npm install --omit=dev
COPY --from=builder /app/dist ./dist
EXPOSE 3001
# Adjust command to start the server
CMD ["node", "dist/server.js"]
ਹੱਲ 2: ਵਾਤਾਵਰਣ ਨਿਯੰਤਰਣ ਲਈ docker-compose.yml ਨੂੰ ਸੋਧਣਾ
ਇਹ ਹੱਲ ਸੋਧਦਾ ਹੈ docker-compose.yml ਸਹੀ ਕਮਾਂਡਾਂ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਸੰਰਚਨਾ ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਸਕ੍ਰਿਪਟਾਂ ਡੌਕਰ ਦੇ ਅੰਦਰ ਸਹੀ ਢੰਗ ਨਾਲ ਚੱਲਦੀਆਂ ਹਨ।
# docker-compose.yml
version: "3.9"
services:
backend:
build:
context: .
dockerfile: Dockerfile
ports:
- "3001:3001"
environment:
PORT: 3001
depends_on:
- dynamodb
command: ["npm", "run", "start"]
dynamodb:
image: amazon/dynamodb-local
ports:
- "8001:8000"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
interval: 10s
timeout: 5s
retries: 5
ਹੱਲ 3: Package.json ਸਕ੍ਰਿਪਟਾਂ ਦੀ ਪੁਸ਼ਟੀ ਅਤੇ ਅੱਪਡੇਟ ਕਰਨਾ
ਇਸ ਹੱਲ ਵਿੱਚ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਸ਼ਾਮਲ ਹੈ ਕਿ ਸ਼ੁਰੂ ਕਰੋ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਸਹੀ ਢੰਗ ਨਾਲ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਹੈ package.json ਗੁੰਮ ਸਕ੍ਰਿਪਟ ਗਲਤੀਆਂ ਨੂੰ ਰੋਕਣ ਲਈ ਫਾਈਲ.
{
"name": "backend",
"version": "1.0.0",
"main": "dist/server.js",
"scripts": {
"build": "tsc",
"start": "node dist/server.js",
"dev": "nodemon --exec ts-node src/server.ts",
"clean": "rimraf dist"
}
}
ਯੂਨਿਟ ਟੈਸਟ: ਸਕ੍ਰਿਪਟ ਅਤੇ ਡੌਕਰ ਕੌਂਫਿਗਰੇਸ਼ਨ ਇਕਸਾਰਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣਾ
ਇਹ ਜੈਸਟ ਟੈਸਟ ਪ੍ਰਮਾਣਿਤ ਕਰਦੇ ਹਨ ਕਿ ਜ਼ਰੂਰੀ ਫਾਈਲਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਕਾਪੀ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ NPM ਸਕ੍ਰਿਪਟਾਂ ਕੰਟੇਨਰ ਵਾਤਾਵਰਣ ਵਿੱਚ ਕੰਮ ਕਰਦੀਆਂ ਹਨ।
// test/deployment.test.js
const fs = require('fs');
describe('Deployment Tests', () => {
test('dist folder exists', () => {
expect(fs.existsSync('./dist')).toBe(true);
});
test('start script exists in package.json', () => {
const packageJson = require('../package.json');
expect(packageJson.scripts.start).toBe("node dist/server.js");
});
test('Dockerfile has correct CMD', () => {
const dockerfile = fs.readFileSync('./Dockerfile', 'utf8');
expect(dockerfile).toMatch(/CMD \["node", "dist\/server.js"\]/);
});
});
Node.js ਪ੍ਰੋਜੈਕਟਾਂ ਲਈ ਡੌਕਰ ਵਿੱਚ ਸਹੀ ਫਾਈਲ ਕਾਪੀ ਅਤੇ ਢਾਂਚੇ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣਾ
ਡੌਕਰ ਵਿੱਚ Node.js ਐਪਲੀਕੇਸ਼ਨਾਂ ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ, ਇੱਕ ਮੁੱਖ ਵਿਚਾਰ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਹੈ ਕਿ ਸਾਰੀਆਂ ਲੋੜੀਂਦੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਕੰਟੇਨਰ ਵਿੱਚ ਸਹੀ ਢੰਗ ਨਾਲ ਕਾਪੀ ਅਤੇ ਢਾਂਚਾ ਬਣਾਇਆ ਗਿਆ ਹੈ। ਮਲਟੀ-ਸਟੇਜ ਬਿਲਡਜ਼ ਵਿੱਚ, ਉਪਰੋਕਤ ਉਦਾਹਰਨ ਵਾਂਗ, ਹਰੇਕ ਪੜਾਅ ਦਾ ਇੱਕ ਖਾਸ ਉਦੇਸ਼ ਹੁੰਦਾ ਹੈ। ਸ਼ੁਰੂਆਤੀ ਪੜਾਅ, "ਬਿਲਡਰ", ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਨੂੰ ਟਾਈਪਸਕ੍ਰਿਪਟ ਨੂੰ ਕੰਪਾਇਲ ਕਰਨ ਦਾ ਕੰਮ ਕਰਦਾ ਹੈ ਅਤੇ ਤਿਆਰ ਕਰਦਾ ਹੈ। ਜਿਲਾ ਫੋਲਡਰ। ਦੂਜੇ ਪੜਾਅ ਵਿੱਚ, ਸਿਰਫ ਉਤਪਾਦਨ ਫਾਈਲਾਂ ਸ਼ਾਮਲ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ, ਕੰਟੇਨਰ ਦੇ ਆਕਾਰ ਨੂੰ ਘਟਾਉਣਾ ਅਤੇ ਤੈਨਾਤੀ ਨੂੰ ਅਨੁਕੂਲ ਕਰਨਾ। ਇਹ ਪਹੁੰਚ ਨਾ ਸਿਰਫ਼ ਬੇਲੋੜੇ ਬਲੋਟ ਨੂੰ ਘਟਾਉਂਦੀ ਹੈ ਬਲਕਿ ਵਿਕਾਸ ਸਾਧਨਾਂ ਨੂੰ ਛੱਡ ਕੇ ਸੁਰੱਖਿਆ ਨੂੰ ਵੀ ਵਧਾਉਂਦੀ ਹੈ।
Node.js ਲਈ ਡੌਕਰ ਦਾ ਇੱਕ ਜ਼ਰੂਰੀ ਪਹਿਲੂ ਇਸ ਦਾ ਆਯੋਜਨ ਕਰ ਰਿਹਾ ਹੈ package.json ਅਤੇ ਸਕ੍ਰਿਪਟ ਸ਼ੁਰੂ ਕਰੋ ਸਹੀ ਢੰਗ ਨਾਲ ਡੌਕਰਫਾਈਲ ਵਿੱਚ ਮਾਰਗਾਂ ਨੂੰ ਸਪਸ਼ਟ ਤੌਰ ਤੇ ਨਿਰਧਾਰਤ ਕਰਕੇ ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾ ਕੇ ਕਿ ਸਟਾਰਟ ਕਮਾਂਡ ਸਹੀ ਢੰਗ ਨਾਲ ਸੈਟ ਅਪ ਕੀਤੀ ਗਈ ਹੈ package.json, ਤੁਸੀਂ "ਗੁੰਮਸ਼ੁਦਾ ਸ਼ੁਰੂਆਤੀ ਸਕ੍ਰਿਪਟ" ਵਰਗੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਘੱਟ ਕਰਦੇ ਹੋ। ਇਹ ਪੁਸ਼ਟੀ ਕਰਨਾ ਵੀ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਡੌਕਰ ਜਾਣਦਾ ਹੈ ਕਿ ਹਰੇਕ ਫਾਈਲ ਕਿੱਥੇ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਕਈ ਸੇਵਾਵਾਂ ਜਾਂ ਫੋਲਡਰਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਵਾਲੇ ਗੁੰਝਲਦਾਰ ਸੈੱਟਅੱਪਾਂ ਵਿੱਚ. ਉਦਾਹਰਨ ਲਈ, ਸਿਰਫ਼ ਜੋੜਨ ਲਈ COPY ਕਮਾਂਡ ਦੀ ਵਰਤੋਂ ਕਰੋ ਜਿਲਾ ਫਾਈਨਲ ਕੰਟੇਨਰ ਲਈ ਫੋਲਡਰ ਅਤੇ ਲੋੜੀਂਦੀਆਂ ਸੰਰਚਨਾਵਾਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੀਆਂ ਹਨ ਕਿ ਉਤਪਾਦਨ ਵਿੱਚ ਸਿਰਫ਼ ਜ਼ਰੂਰੀ ਫ਼ਾਈਲਾਂ ਹੀ ਉਪਲਬਧ ਹਨ 📂।
ਤੁਹਾਡੀਆਂ ਸੇਵਾਵਾਂ ਦੀ ਸਿਹਤ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ, docker-compose.yml ਫਾਈਲ ਡਾਟਾਬੇਸ ਦੇ ਤਿਆਰ ਹੋਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਸਿਹਤ ਜਾਂਚ ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ। ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਕੇ, ਅਸੀਂ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਾਂ ਕਿ ਬੈਕਐਂਡ ਸੇਵਾ ਉਦੋਂ ਤੱਕ ਸ਼ੁਰੂ ਨਹੀਂ ਹੁੰਦੀ ਜਦੋਂ ਤੱਕ ਡਾਟਾਬੇਸ ਜਵਾਬਦੇਹ ਨਹੀਂ ਹੁੰਦਾ, ਸਮਾਂ-ਸਬੰਧਤ ਕਨੈਕਸ਼ਨ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਰੋਕਦਾ ਹੈ। ਇਹ ਸੈੱਟਅੱਪ ਅਸਲ-ਸੰਸਾਰ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਖਾਸ ਤੌਰ 'ਤੇ ਲਾਭਦਾਇਕ ਹੈ ਜਿੱਥੇ ਡੇਟਾਬੇਸ ਕਨੈਕਟੀਵਿਟੀ ਜ਼ਰੂਰੀ ਹੈ। ਇਸ ਢਾਂਚੇ ਤੋਂ ਬਿਨਾਂ, ਸੇਵਾਵਾਂ ਹੋਰ ਸੇਵਾਵਾਂ ਦੇ ਚਾਲੂ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਕਨੈਕਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੀਆਂ ਹਨ, ਜਿਸ ਨਾਲ ਰਨਟਾਈਮ ਦੀਆਂ ਤਰੁੱਟੀਆਂ ਅਤੇ ਉਪਭੋਗਤਾਵਾਂ ਲਈ ਸੰਭਾਵੀ ਡਾਊਨਟਾਈਮ ਹੋ ਸਕਦਾ ਹੈ 🔄।
Node.js ਵਿੱਚ "ਗੁੰਮਸ਼ੁਦਾ ਸਟਾਰਟ ਸਕ੍ਰਿਪਟ" ਫਿਕਸ ਕਰਨ ਬਾਰੇ ਆਮ ਸਵਾਲ
- NPM ਵਿੱਚ "ਗੁੰਮਸ਼ੁਦਾ ਸ਼ੁਰੂਆਤੀ ਸਕ੍ਰਿਪਟ" ਗਲਤੀ ਦਾ ਕੀ ਕਾਰਨ ਹੈ?
- ਇਹ ਗਲਤੀ ਅਕਸਰ ਉਦੋਂ ਵਾਪਰਦੀ ਹੈ ਜਦੋਂ package.json ਫਾਈਲ ਵਿੱਚ ਇੱਕ ਨਹੀਂ ਹੈ start ਸਕ੍ਰਿਪਟ ਪਰਿਭਾਸ਼ਿਤ. NPM ਐਪਲੀਕੇਸ਼ਨ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਸਹੀ ਐਂਟਰੀ ਪੁਆਇੰਟ ਨਹੀਂ ਲੱਭ ਸਕਦਾ।
- ਕਰਦਾ ਹੈ package.json ਫਾਈਲ ਵਿੱਚ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ dist ਫੋਲਡਰ?
- ਨਹੀਂ, ਦ package.json ਆਮ ਤੌਰ 'ਤੇ ਰੂਟ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਰਹਿੰਦਾ ਹੈ, ਅਤੇ ਸਿਰਫ਼ ਲੋੜੀਂਦੀਆਂ ਫਾਈਲਾਂ ਦੀ ਨਕਲ ਕੀਤੀ ਜਾਂਦੀ ਹੈ dist ਫੋਲਡਰ।
- ਅਸੀਂ ਡੌਕਰ ਵਿੱਚ ਮਲਟੀ-ਸਟੇਜ ਬਿਲਡਾਂ ਦੀ ਵਰਤੋਂ ਕਿਉਂ ਕਰਦੇ ਹਾਂ?
- ਮਲਟੀ-ਸਟੇਜ ਬਿਲਡ ਸਾਨੂੰ ਹਲਕੇ, ਉਤਪਾਦਨ ਲਈ ਤਿਆਰ ਕੰਟੇਨਰ ਬਣਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹਨ। ਬਿਲਡ ਅਤੇ ਰਨਟਾਈਮ ਵਾਤਾਵਰਣ ਨੂੰ ਵੱਖ ਕਰਨ ਨਾਲ, ਬੇਲੋੜੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਬਾਹਰ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ, ਸੁਰੱਖਿਆ ਅਤੇ ਕੁਸ਼ਲਤਾ ਵਿੱਚ ਸੁਧਾਰ ਹੁੰਦਾ ਹੈ।
- ਕਿਵੇਂ ਕਰਦਾ ਹੈ healthcheck ਡੌਕਰ ਕੰਪੋਜ਼ ਮਦਦ ਵਿੱਚ?
- ਦ healthcheck ਕਮਾਂਡ ਜਾਂਚ ਕਰਦੀ ਹੈ ਕਿ ਕੀ ਕੋਈ ਸੇਵਾ ਚਾਲੂ ਅਤੇ ਚੱਲ ਰਹੀ ਹੈ, ਜੋ ਉਹਨਾਂ ਮਾਮਲਿਆਂ ਵਿੱਚ ਜ਼ਰੂਰੀ ਹੈ ਜਿੱਥੇ ਨਿਰਭਰ ਸੇਵਾਵਾਂ ਨੂੰ ਪਹਿਲਾਂ ਤਿਆਰ ਹੋਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਡੇਟਾਬੇਸ।
- ਕੀ ਮੈਂ ਇਸ ਸੈੱਟਅੱਪ ਵਿੱਚ ਡਾਇਨਾਮੋਡੀਬੀ ਦੀ ਬਜਾਏ ਹੋਰ ਡੇਟਾਬੇਸ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦਾ ਹਾਂ?
- ਹਾਂ, ਤੁਸੀਂ ਬਦਲ ਸਕਦੇ ਹੋ DynamoDB ਹੋਰ ਡਾਟਾਬੇਸ ਦੇ ਨਾਲ. ਆਪਣੀ ਪਸੰਦੀਦਾ ਡੇਟਾਬੇਸ ਸੇਵਾ ਦੇ ਅਨੁਕੂਲ ਹੋਣ ਲਈ ਡੌਕਰ ਕੰਪੋਜ਼ ਕੌਂਫਿਗਰੇਸ਼ਨ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰੋ।
- ਅਸੀਂ ਕਿਉਂ ਵਰਤਦੇ ਹਾਂ RUN npm install --omit=dev ਹੁਕਮ?
- ਇਹ ਕਮਾਂਡ ਸਿਰਫ ਉਤਪਾਦਨ ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਸਥਾਪਿਤ ਕਰਦੀ ਹੈ, ਜੋ ਵਿਕਾਸ ਸਾਧਨਾਂ ਨੂੰ ਛੱਡ ਕੇ ਕੰਟੇਨਰ ਨੂੰ ਹਲਕਾ ਰੱਖਣ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ।
- ਮੈਂ ਪੁਸ਼ਟੀ ਕਿਵੇਂ ਕਰ ਸਕਦਾ ਹਾਂ dist ਫੋਲਡਰ ਸਹੀ ਢੰਗ ਨਾਲ ਕਾਪੀ ਕੀਤਾ ਗਿਆ ਹੈ?
- ਤੁਸੀਂ ਇਹ ਜਾਂਚ ਕਰਨ ਲਈ ਆਪਣੇ ਕੋਡ ਵਿੱਚ ਇੱਕ ਟੈਸਟ ਸ਼ਾਮਲ ਕਰ ਸਕਦੇ ਹੋ dist ਮੌਜੂਦ ਹੈ, ਜਾਂ ਬਿਲਡ ਤੋਂ ਬਾਅਦ ਕੰਟੇਨਰ ਦੀਆਂ ਸਮੱਗਰੀਆਂ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਡੌਕਰ CLI ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਕੀ ਮੈਨੂੰ ਡੌਕਰਫਾਈਲ ਅਤੇ ਡੌਕਰ ਕੰਪੋਜ਼ ਦੋਵਾਂ ਵਿੱਚ ਪੋਰਟ ਨਿਰਧਾਰਤ ਕਰਨ ਦੀ ਲੋੜ ਹੈ?
- ਹਾਂ, ਦੋਵਾਂ ਵਿੱਚ ਪੋਰਟ ਨੂੰ ਨਿਸ਼ਚਿਤ ਕਰਨਾ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਕੰਟੇਨਰ ਪੋਰਟ ਮੇਜ਼ਬਾਨ ਪੋਰਟ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ, ਸੇਵਾ ਨੂੰ ਬਾਹਰੋਂ ਡੌਕਰ ਤੋਂ ਪਹੁੰਚਯੋਗ ਬਣਾਉਂਦਾ ਹੈ।
- ਸੈਟਿੰਗ ਕਿਉਂ ਹੋ ਰਹੀ ਹੈ WORKDIR Docker ਮਹੱਤਵਪੂਰਨ ਵਿੱਚ?
- ਸੈਟਿੰਗ WORKDIR ਸਾਰੀਆਂ ਕਮਾਂਡਾਂ ਲਈ ਇੱਕ ਡਿਫਾਲਟ ਡਾਇਰੈਕਟਰੀ ਮਾਰਗ ਬਣਾਉਂਦਾ ਹੈ, ਫਾਈਲ ਮਾਰਗਾਂ ਨੂੰ ਸਰਲ ਬਣਾਉਂਦਾ ਹੈ ਅਤੇ ਕੰਟੇਨਰ ਫਾਈਲਾਂ ਨੂੰ ਯੋਜਨਾਬੱਧ ਢੰਗ ਨਾਲ ਸੰਗਠਿਤ ਕਰਦਾ ਹੈ।
- ਮੈਂ ਇਸ ਗਲਤੀ ਨੂੰ ਡੀਬੱਗ ਕਰਨ ਲਈ ਡੌਕਰ ਲੌਗਸ ਨੂੰ ਕਿਵੇਂ ਦੇਖ ਸਕਦਾ ਹਾਂ?
- ਵਰਤੋ docker logs [container_name] ਲੌਗਸ ਨੂੰ ਐਕਸੈਸ ਕਰਨ ਲਈ, ਜੋ ਕਿ ਕਿਸੇ ਵੀ ਸ਼ੁਰੂਆਤੀ ਤਰੁੱਟੀਆਂ ਜਾਂ ਗੁੰਮ ਹੋਈਆਂ ਫਾਈਲਾਂ ਦੀ ਜਾਣਕਾਰੀ ਪ੍ਰਦਾਨ ਕਰ ਸਕਦਾ ਹੈ।
Docker ਵਿੱਚ Node.js ਸਟਾਰਟਅੱਪ ਗਲਤੀਆਂ ਨੂੰ ਠੀਕ ਕਰਨਾ
"ਗੁੰਮਸ਼ੁਦਾ ਸ਼ੁਰੂਆਤੀ ਸਕ੍ਰਿਪਟ" ਗਲਤੀ ਨੂੰ ਸੰਬੋਧਿਤ ਕਰਨ ਲਈ ਵੇਰਵੇ ਵੱਲ ਧਿਆਨ ਦੇਣ ਦੀ ਲੋੜ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਡੌਕਰ ਦੀ ਫਾਈਲ ਬਣਤਰ ਅਤੇ NPM ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਨ ਵਿੱਚ. ਕੰਪਾਇਲ ਕੀਤੀਆਂ ਫਾਈਲਾਂ ਦੀ ਨਕਲ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਤੁਹਾਡੀ ਡੌਕਰਫਾਈਲ ਦੀ ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ ਜਿਲਾ ਫੋਲਡਰ ਅਤੇ ਇਹ ਕਿ package.json ਵਿੱਚ ਸਟਾਰਟ ਸਕ੍ਰਿਪਟ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਤੁਹਾਨੂੰ ਡੀਬੱਗਿੰਗ ਦੇ ਘੰਟੇ ਬਚਾ ਸਕਦਾ ਹੈ।
ਇੱਕ ਸਪਸ਼ਟ ਸੈਟਅਪ ਅਤੇ ਸੰਗਠਿਤ ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ ਬਣਾਈ ਰੱਖਣ ਨਾਲ ਡੌਕਰ ਕੰਟੇਨਰਾਂ ਨੂੰ ਸਮੱਸਿਆਵਾਂ ਤੋਂ ਬਿਨਾਂ ਕੰਮ ਕਰਨ ਵਿੱਚ ਮਦਦ ਮਿਲੇਗੀ, ਅਤੇ ਡੌਕਰ ਕੰਪੋਜ਼ ਵਿੱਚ ਸਿਹਤ ਜਾਂਚਾਂ ਦੀ ਵਰਤੋਂ ਨਾਲ ਸੇਵਾਵਾਂ ਨੂੰ ਸਹੀ ਕ੍ਰਮ ਵਿੱਚ ਲੋਡ ਕਰਨਾ ਯਕੀਨੀ ਬਣਾਇਆ ਜਾਵੇਗਾ। ਇਹਨਾਂ ਵਿਵਸਥਾਵਾਂ ਦੇ ਨਾਲ, ਤੁਹਾਡਾ ਬੈਕਐਂਡ ਭਰੋਸੇਯੋਗ ਢੰਗ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਤੁਹਾਨੂੰ ਇੱਕ ਨਿਰਵਿਘਨ ਵਿਕਾਸ ਕਾਰਜਪ੍ਰਵਾਹ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। 🛠️
ਸਰੋਤ ਅਤੇ ਹਵਾਲੇ
- ਡੌਕਰ ਵਿੱਚ Node.js ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਡੌਕਰ ਮਲਟੀ-ਸਟੇਜ ਬਿਲਡ ਅਤੇ ਵਧੀਆ ਅਭਿਆਸਾਂ ਬਾਰੇ ਵਿਸਤ੍ਰਿਤ ਜਾਣਕਾਰੀ: ਡੌਕਰ ਦਸਤਾਵੇਜ਼ੀ
- ਸੇਵਾਵਾਂ ਨੂੰ ਸਹੀ ਕ੍ਰਮ ਵਿੱਚ ਸ਼ੁਰੂ ਕਰਨਾ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਡੌਕਰ ਕੰਪੋਜ਼ ਵਿੱਚ ਸਿਹਤ ਜਾਂਚਾਂ ਅਤੇ ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਬਾਰੇ ਵਿਆਪਕ ਗਾਈਡ: ਡੌਕਰ ਕੰਪੋਜ਼ ਸਿਹਤ ਜਾਂਚ
- "ਗੁੰਮਸ਼ੁਦਾ ਸ਼ੁਰੂਆਤੀ ਸਕ੍ਰਿਪਟ" ਤਰੁੱਟੀਆਂ ਅਤੇ ਹੋਰ ਆਮ NPM ਮੁੱਦਿਆਂ ਦਾ ਨਿਪਟਾਰਾ ਕਰਨਾ, ਜਿਸ ਵਿੱਚ ਪੈਕੇਜ.json ਨੂੰ ਉਤਪਾਦਨ ਬਿਲਡਾਂ ਲਈ ਸਹੀ ਢੰਗ ਨਾਲ ਸੰਰਚਿਤ ਕਰਨਾ ਸ਼ਾਮਲ ਹੈ: NPM ਦਸਤਾਵੇਜ਼
- Node.js ਬੈਕਐਂਡ ਦੇ ਨਾਲ ਵਰਤੋਂ ਸਮੇਤ, ਡੌਕਰ ਵਾਤਾਵਰਨ ਦੇ ਅੰਦਰ ਡਾਇਨਾਮੋਡੀਬੀ ਸਥਾਨਕ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਨ ਅਤੇ ਟੈਸਟ ਕਰਨ ਲਈ ਜਾਣ-ਪਛਾਣ: AWS DynamoDB ਲੋਕਲ ਗਾਈਡ