【问题标题】:Route web Node.js + Vagrant + Nginx路由 web Node.js + Vagrant + Nginx
【发布时间】:2015-08-12 20:56:29
【问题描述】:

我在 Vagrant 中有 3 个 CoreOS 实例。在其中一个中,我有一个带有 Node.js 的 Docker 容器和另一个带有 MongoDB 的容器。如果我在容器和 coreOS 的实例中执行 wget,Node.js 容器已配置并运行 nginx。我的问题是我是否必须配置更多内容才能在导航器中显示网站,因为我不能。

我可以在 Vagrant 中放置路由器或其他东西吗?

【问题讨论】:

  • 我们可能需要 Vagrantfile 以及您从导航器中尝试的具体内容(您是否启用了专用网络或仅启用了转发端口?)才能提供帮助。另外,如果您有转发端口,请尝试使用 localhost:8080 或 8000 ?而不是 127.0.0.1,这是一个常见问题
  • 我修好了。当我使用 -p 80:80 运行 docker 容器时,我必须配置输入和输出端口。谢谢!

标签: node.js nginx docker vagrant


【解决方案1】:

首先,我要指出的是,你应该应用关注点分离,将 nginx 和 node 拆分在单独的容器中,每个容器负责各自的任务。

这将为您留下一个 nginx 容器、一个节点容器和一个 mongodb 容器,然后您需要链接它们。这可以通过多种方式完成。其中之一是将容器公开的端口绑定到主机的私有或公共 IP 地址,以及该地址上的端口。

也就是说,在正常的 CoreOS 设置中,您应该能够通过主机的 IP 地址和您绑定容器端口的端口来查看网络服务器。 但是,由于 vagrant 端口也应该被映射,因此您必须将“真实”主机端口映射到主机上的端口。

实现示例的步骤: 1. 通过在 Vagrantfile 中提供此配置,将 localhost 的 80 端口映射到 CoreOS vagrantboxes:

Vagrant.configure("2") do |config|
    config.vm.network "forwarded_port", guest: 80, host: 80
end

2。在 CoreOS 上运行您的容器,并将其公开端口绑定到您的 CoreOS:

docker run --name containername \
    -p 80:80
    imagename /cmd

现在您应该可以通过在浏览器中转到 http://localhost 来访问您的容器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 2017-06-11
    • 2018-09-12
    • 2015-05-14
    相关资源
    最近更新 更多