2014-10-31 20 views
10

bulamıyorum docker ile sorun yaşıyorum ve alabilirim. Docker belgesini takiben bir kapsayıcının EXPOSE ile bağlantılarını dinleyeceği bağlantı noktalarını ortaya çıkarabilirsiniz. Çok uzak çok iyi!Docker EXPOSE. Geçtiğimiz iki günde

Uygulamam 8080 numaralı bağlantı noktasında dinleniyorsa docker kabını EXPOSE 8080 ile ortaya çıkarmalı ve ana ana bilgisayarın bağlantı noktası 80'e docker run -p 80:8080 ile bağlamalıyım.

# DOCKER-VERSION 0.0.1 

FROM ubuntu:14.10 

# make sure apt is up to date 
RUN apt-get update 

# install nodejs and npm 
RUN apt-get install -y nodejs-legacy npm git git-core 

ADD package.json /root/ 
ADD server.js /root/ 

# start script 
ADD start.sh /root/ 
RUN chmod +x /root/start.sh 

EXPOSE 8080 

CMD ./root/start.sh 

Ve benim start.sh sadece & npm install & node server.jscd /root/ Runan:

İşte benim Dockerfile olduğunu. docker build -t app1 . Ve benim liman işçisi başlatmak nasıl: docker run -it -p 80:8080 --name app1 app1 gerçekten kablolu Ne

bu değil

İşte
var express = require('express'); 

// Constants 
var PORT = 8080; 

// App 
var app = express(); 
app.get('/', function (req, res) { 
    res.send('Hello world\n'); 
}); 

app.listen(PORT); 
console.log('Running on http://localhost:' + PORT); 

benim liman işçisi görüntüsünü nasıl inşa geçerli:

ben basit ekspres uygulaması nodejs var Çalışma. Çalıştırmak için EXPOSE 8080'u EXPOSE 80 olarak değiştirmem gerekiyor. Anlamadım.

Herhangi bir açıklama? Okumak için

sayesinde Tom başınıza nodejs uygulamasında

+0

Bu bir yapılandırma sorunudur, her zaman bu bağlantı noktası eşlemesi türünü kullanıyorum. "Çalışmıyor" yeterli bilgi değildir. Bağlantı noktaları ana bilgisayarda açık mı? Düzgün haritalandırırsan ne olur? - 8080: 8080 mi? vb. – user2105103

+0

"Çalışmıyor" dediğimde, kapsayıcı ana kapsayıcıda istesem bile kıvrım veya 80 numaralı bağlantı noktasında herhangi bir tarayıcı kullanarak kapsayıcımla bağlantı kuramıyorum anlamına gelir. "-p 8080: 8080" kullanımı hiçbir şeyi değiştirmez. –

cevap

26

, bağlantı noktasında PORT üzerinde geri döngü arabiriminde bağlantıları için dinleme bir sunucuyu başlatmak için nodejs söyler talimat app.listen(PORT); var. Sonuç olarak, uygulamanız yalnızca localhost'tan (kapsayıcının kendisi) kaynaklanan bağlantıları görebilecektir.

app.listen(PORT, "0.0.0.0"); 

Bu yolu bağlantıları sizin Docker konteyner dışından kaynaklanan göreceksiniz:

Sen port PORT tüm arabirimleri dinleyecek şekilde uygulamanızı anlatmak gerekiyor.

+0

Teşekkür ederim, şimdi anlıyorum;) –

+0

Benim için çalışmadı. :( –

+0

nodejs komutunu çalıştırırken satırın sonuna --production param koymak zorunda kaldı.Bu param + ile senin ucu şimdi çalışıyor –