Docker Image: warum Seite nicht erreichbar?
Hallo zusammen,
ich habe in den letzten Tagen ein kleines Programm geschrieben, nur eine kleine API mit Fastify und ein paar NPM Paketen.
Ich habe mir dann gedacht: mach doch mal ein Docker Image draus. Nach ein paar Tutorials und "Online-Recherchen" bin ich dann zu folgendem Dockerfile gekommen:
FROM node:current-alpine3.19
WORKDIR /usr/src/app
RUN chown -R node:node /usr/src/app
COPY src/package.json ./
COPY src/package-lock.json ./
RUN npm install
USER node
COPY --chown=node:node ./src .
CMD [ "npm", "start" ]
Der Build hat geklappt und ich habe den Container mit "docker run -p 3000:3000 [mein-projekt]" gestartet.
Im Container sieht alles gut aus. Die Dateistruktur scheint zu stimmen und ich bekomme bei einem "wget 127.0.0.1:3000" die erwartete Antwort.
Leider kann ich die Seite aber nicht von meinem PC aus mit localhost:3000 oder 127.0.0.1:3000 öffnen. Firefox gibt mir die Meldung "Die Verbindung zum Server wurde zurückgesetzt, während die Seite geladen wurde." Also gibt es eine Art kurze Verbindung?
Ich weiß gerade einfach nicht weiter. Fastify läuft unter Port 3000, Port 3000 wird auch im "docker run" Befehl genutzt und ich mache die Seite mit Port 3000 auf. In Foren habe ich nichts gefunden und ChatGPT hilft nicht wirklich weiter.
Was mache ich falsch?
Vielen Dank für eure Antworten und noch einen schönen Abend!
2 Antworten
Welchen Webserver verwendest du denn?
Alpine ist ja einfach nur eine Lightweight Linux Distribution. Aber wenn du mit einem Webbrowser zugreifen willst, sollte am anderen Ende schon auch ein Webserver sitzen, egal ob das jetzt ein Apache oder (bei Containern häufiger verwendet) ein Nginx ist.
Das Problem war, dass der Host in meiner server.js Datei nicht festgelegt war.
Nachdem ich ihn auf 0.0.0.0 gesetzt habe, hat alles funktioniert.