Contexte
Vous êtes d’astreinte. Un collègue a déployé myapp:1.4 vendredi soir avant de partir. Lundi matin, les utilisateurs signalent que l’application est inaccessible. Vous vous connectez au serveur via SSH.
Fichiers du projet :
server.js :
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;
const HOST = process.env.HOST || '127.0.0.1';
app.get('/health', (req, res) => res.json({ status: 'ok' }));
app.get('/', (req, res) => res.send('Hello world'));
app.listen(PORT, HOST, () => {
console.log(`Server started on port ${PORT}`);
});Dockerfile :
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]Ce que tu observes sur le serveur :
$ docker ps
CONTAINER ID IMAGE STATUS PORTS
a3f91bc2d1e4 myapp:1.4 Up 3h (healthy) 0.0.0.0:3000->3000/tcp
$ curl http://localhost:3000
curl: (7) Failed to connect to localhost port 3000: Connection refused
$ docker logs a3f91bc2d1e4 --tail 5
Server started on port 3000
Database connected
Ready.
$ docker inspect a3f91bc2d1e4 | grep -i restart
"RestartPolicy": { "Name": "unless-stopped" }
"RestartCount": 0
$ sudo ufw status
Status: inactiveQuestion : Le conteneur est sain, aucun plantage, aucun pare-feu, le port semble correctement mappé. Pourquoi l’application est-elle inaccessible ?
⌛ Answer coming in
13
days
03
hours
44
minutes
51
seconds
Answer on: