2014-12-01 2 views
1

Я уже стучал головой о стену на целый день, поэтому спасибо за вашу помощь. Я запускаю Vagrant в Mac OS X, и я хочу запустить контейнер Docker с помощью простого сервера node.js 'hello world', запущенного внутри. Я хочу иметь доступ к этой форме сервера в моем браузере.Vagrant, Docker и Node.js на Mac OS X

Вот мой Vagrantfile.proxy (для запуска сервера Докер):

VAGRANTFILE_API_VERSION = "2" 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
    config.vm.box = "hashicorp/precise64" 
    config.vm.provision "docker" 
    config.vm.provision "shell", inline: 
    "ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill" 

    config.vm.network :forwarded_port, guest: 8888, host: 8888 
end 

Вот моя Vagrantfile:

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! 
VAGRANTFILE_API_VERSION = "2" 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 

    # Tells vagrant to build the image based on the Dockerfile found in 
    # the same directory as this Vagrantfile. 
    config.vm.define "nodejs" do |v| 
    v.vm.provider "docker" do |d| 
     d.build_dir = "." 
     d.ports = ['8888:8888'] 
     d.vagrant_vagrantfile = "./Vagrantfile.proxy" 
    end 
    end 

    config.vm.network :forwarded_port, host: 8888, guest: 8888 
end 

Вот мой Dockerfile:

FROM ubuntu:14.04 
MAINTAINER Sean 

RUN apt-get update 
RUN apt-get install -y python-software-properties python 
RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ precise universe" >> /etc/apt/sources.list 
RUN apt-get update 
RUN apt-get install -y nodejs 
RUN mkdir /var/www 

ADD app.js /var/www/app.js 

CMD ["/usr/bin/nodejs", "/var/www/app.js"] 

EXPOSE 8888 

И здесь id app.js (простой сервер node.js):

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(8888, '127.0.0.1'); 
console.log('Server running at http://127.0.0.1:8888/'); 

Я запускаю систему, используя «бродячий вверх» --provider = «docker». Затем я проверяю, что сервер начал использовать «бродячие докеры-журналы», который показывает вывод консоли. Затем я стараюсь:

'curl http://localhost:8888' 

но я получаю «завиток: (52)« Пустое сообщение от сервера »каждый раз.

Что мне не хватает?

ответ

1

Проблема в том, что я пытался запустить nodejs-сервер на 127.0.0.1, а не 0.0.0.0. Полный, исправленный источник можно найти по адресу here.

Смежные вопросы