2015-12-15 4 views
1

Я создаю приложение Express (nodejs), которое работает на порте 3000, с простым миром приветствия и пересылается в публичный репозиторий github.Docker run, не имеет доступа к приложению

На самом деле, он прекрасно работает и код просто выглядит следующим образом:

var express = require('express'); 
var app = express(); 

app.get('/', function (req, res) { 
    res.send('Hello World!'); 
}); 

var server = app.listen(3000, function() { 
    var host = server.address().address; 
    var port = server.address().port; 

    console.log('Example app listening at http://%s:%s', host, port); 
}); 

я м изучения докер, и я хочу, чтобы сделать этот небольшой код работать внутри контейнера, так что я создал этот dockerfile:

FROM phusion/baseimage:0.9.17 

# Use baseimage-docker's init system. 
CMD ["/sbin/my_init"] 

# Install corresponding packages 
# Git, pm2, curl 
RUN apt-get update && apt-get install -y \ 
    git \ 
    curl 

# Downloading NodeJs v0.12 
RUN curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash - 
RUN apt-get install -y nodejs 

# Cloning repository 
RUN git clone https://github.com/User/hello-world.git 

# Install global dependencies 
RUN npm install -g pm2 

# Move inside of the project 
RUN cd hello-world && npm install && pm2 start app.js 


# Clean up APT when done. 
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 

Тогда я бег этого костюма команды:

docker build -t hello-world 
docker run -p 3000:3000 

После этого (и все successfu l), когда я пытаюсь получить доступ к http://localhost:3000/, Страница не найдена.

Мне нужна помощь, чтобы понять мои ошибки.

Спасибо за

+0

вашей команды CMD не является правильной, это должна быть последней строкой вашего файла Docker – user2915097

ответ

1

, Вам необходимо войти в свой запущенном контейнере:

docker exec -it <container-id> /bin/bash 

После того, как внутри контейнера, вы можете запустить приложение там и отладки непосредственно внутри контейнера.

что-то вроде:

cd your-directory/hello-world 

Тогда:

node app.js 

Консоли выплюнуть ошибки как локальная среда разработки.

+0

Я запустил его с pm2, как показано в файле docker – mfrachet

+0

, что в консоли появилось консольное представление? Это поможет другим, если вы разместите его здесь в своем вопросе. – user3452275

+0

действительно работает как демон – mfrachet

0

В зависимости от вашей установки докере она может быть недоступна на локальном хосте. Моя установка, например, недоступна на 127.0.0.1, но на 192.168.99.100.

Следующая hostsentry:

192.168.99.100 dockerhost

позволит мне получить доступ приложения на http://dockerhost:3000/

Надежда, что помогает :-)