2017-10-12 1 views
1

J'ai un serveur de noeud graphql. Je suis capable de l'exécuter localement sans docker. Mais après avoir créé un conteneur docker du serveur et lié le port du conteneur avec le port hôte, cela ne fonctionne pas.Le serveur de nœud sur le docker n'est pas accessible sur localhost même après la liaison de port

Voici mon code Dockerfile:

FROM node:boron-alpine 
WORKDIR /app 
COPY package.json /app 
RUN npm install 
COPY . /app 
ENV SERVER_PORT 8080 
EXPOSE 8080 
CMD npm run build && npm start 

Mon code de serveur de nœud est en tant que tel:

app.listen(process.env.SERVER_PORT,'0.0.0.0') 
    console.log(`listening at ${port}`) 

je lance docker avec la commande suivante:

docker run -it -p 8080:8080 nodeapi 

Cela fonctionne parfaitement nodejs peut voir l'env SERVER_PORT cause cela montre

"listening at 8080" 

dans la console.

Mais quand j'ouvre localhost: 8080 cela ne fonctionne pas (Le site ne peut pas être atteint).

J'ai également essayé de lancer la commande docker

docker run -it -p 127.0.0.1:8080:8080 nodeapi 

Cela ne fonctionne pas

J'utilise boîte à outils docker sur Windows 10 dernière version

Merci

Répondre

4

boîte à outils Docker doesn Ne pas mapper les ports vers localhost. Il mappe au

de IP VM Docker la course ci-dessous commande pour obtenir l'IP

docker-machine ip 

Utilisez ensuite le http://<IP>:8080 dans votre navigateur

+1

Cela fonctionne parfaitement grâce. Mais existe-t-il un moyen de le mapper à localhost à la place? – scroobius

1

Si vous évitera de spécifier l'adresse IP 0.0.0.0

app.listen(process.env.SERVER_PORT, function() { 
    console.log('Listening on port '+ process.env.SERVER_PORT); 
}); 

et

docker run -it -p 8080:8080 nodeapi 

il vous permettra de charger le site comme

http://localhost:8080 
+0

Cela ne fonctionne pas pour la boîte à outils docker – scroobius