vagrant を使用してホストされている docker コンテナー内で単純なノード アプリを実行しようとすると、問題が発生します。
このページでは、基本的なアプローチについて説明しています: https://www.vagrantup.com/blog/feature-preview-vagrant-1-6-docker-dev-environments.html
私ができないことは、自分のマシンからノードアプリにアクセスすることです-理論的には、「hello world」スタイルのノード/エクスプレスアプリをlocalhost:8181
...
以下は私がこれまでに持っているものです:
Vagrantfile:
Vagrant.configure("2") do |config|
config.vm.provider "docker" do |d|
d.build_dir = "."
d.ports = ["8080:5000"]
# Is this necessary if EXPOSE is used in Dockerfile?
d.expose = ["5000"]
d.remains_running = true
d.volumes = ["/shared"]
end
config.vm.network "forwarded_port", guest: 8080, host: 8181
config.vm.synced_folder "~/Documents/shared", "/shared"
end
Dockerfile:
# DOCKER-VERSION 0.8.0
FROM centos:6.4
RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
RUN yum install -y npm ImageMagick
ADD . /app
# Not necessary because node_modules are bundled
# RUN cd /app; npm install
EXPOSE 5000
CMD ["node", "/app/index.js"]
ドキュメントをできる限り厳密にフォローしましたが、私が求めているものを達成できないようです。何か案は?
注:ノードアプリは、通常どおり実行されている場合、つまり次$ node index
の場所でアクセスされている場合に機能していますlocalhost:5000
前もって感謝します
編集:
index.js:
var express = require('express'),
http = require('http');
var app = express();
var port = 5000;
app.get('/', function(req, res) {
res.send('Hello World');
});
var server = http.createServer(app);
server.on('listening', function() {
console.log('Express server listening on port ' + port);
});
server.listen(port, '0.0.0.0');
setInterval(function(){
console.log('running');
}, 5000);
パッケージ.json:
{
"name": "vagrant-docker-node",
"version": "0.0.0",
"dependencies": {
"express": "^4.1.0"
},
"main": "index.js"
}