Со следующим приложением я могу запустить его вручную через npm install/node app.js. Проблема заключается в попытке запустить приложение через контейнер Docker.
Помимо того, что представляет собой остальная часть приложения (что не имеет значения, потому что запуск контейнера Docker не заходит так далеко), Dockerfile извлекает код из GitHub, переключается в этот каталог, затем запускает app.js (который извлекает хост и порт из файла config.json). Попытка запустить контейнер с IP-адресом сервера (который он должен прослушивать) приводит к следующей ошибке:
uncaughtException: Error: listen EADDRNOTAVAIL
Error: listen EADDRNOTAVAIL
at errnoException (net.js:905:11)
at Server._listen2 (net.js:1024:19)
at listen (net.js:1065:10)
at net.js:1147:9
at dns.js:72:18
at process._tickCallback (node.js:442:13)
at Function.Module.runMain (module.js:499:11)
at startup (node.js:119:16)
at node.js:929:3
Изменение порта никак не решает проблему. Я включил соответствующие файлы ниже (некоторые разделы заменены на {псевдокод}). Любая помощь будет безмерно оценена, потому что я абсолютно безнадежен, когда дело доходит до Docker.
Докерфайл:
FROM centos:centos6
RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
RUN yum install -y npm git
RUN git clone {repo.git}
COPY . /src
RUN npm install
CMD ["node", "app.js"]
конфиг.json:
{
"app_host": "{IP of server}",
"app_port": "20000"
}
приложение.js:
var server = app.listen(config_json.app_port, config_json.app_host, function () {
var host = server.address().address;
var port = server.address().port;
console.log('\n listening at http://%s:%s', host, port);
});
module.exports = app;
app_host
? Является ли этот IP-адрес действительным в вашем контейнере Docker? Я считаю, что Docker использует частный диапазон IP-адресов для своих интерфейсов, поэтому вы не можете напрямую привязываться к внешнему IP-номеру. - person robertklep   schedule 28.06.2015docker run -p 20001:20000 container-name
. Оба пути приводят к ошибке. - person Jack Hilary   schedule 28.06.20150.0.0.0
какapp_host
и запуская Docker с-p
для сопоставления внешнего порта с внутренним. - person robertklep   schedule 28.06.2015docker ps
- person Thomasleveil   schedule 28.06.2015