nginx - 使用 Docker 和 phusion-passenger 部署 Meteor 应用程序

标签 nginx meteor passenger docker

我正在尝试将 Meteor 应用程序部署到我的 Ubuntu 14.04 (可信赖的塔尔)VPS .我正在使用私有(private) Docker DockerHub 上的注册表,从我的 Git 中提取自动build设置Bitbucket 上的存储库.这真的很好。

但是,当我运行容器时,我看不到 Meteor 应用程序正在运行。我在他们的文档中阅读了关于 phusion-passenger 和 Meteor 的信息,但我认为该指南缺少一些东西,因为我无法让它工作。

我的方法是使用 meteor 创建一个应用程序:

meteor create simple-wishes

这将创建一个目录,其中包含一个 CSS、HTML 和 JavaScript 文件(以及一个 .meteor 文件夹)。在这个目录之外,我创建了一个 Dockerfile,如下所示:
FROM phusion/passenger-nodejs:0.9.14
MAINTAINER Søren Pedersen

# Set correct environment variables.
ENV HOME /root

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

# ssh
ADD ssh/id_rsa.pub /tmp/your_key
RUN cat /tmp/your_key >> /root/.ssh/authorized_keys && rm -f /tmp/your_key

# install meteor
RUN curl https://install.meteor.com | /bin/sh

# Remove the default site
RUN rm /etc/nginx/sites-enabled/default

# Enable nginx
RUN rm -f /etc/service/nginx/down

# Setup app
ADD webapp.conf /etc/nginx/sites-enabled/webapp.conf
RUN mkdir /home/app/simple-wishes
ADD simple-wishes /home/app/simple-wishes

Dockerfile 中引用的 webapp.conf 文件如下所示:
server {
    listen 80;
    server_name simple-wishes.com;
    root /home/app/simple-wishes/public;

    passenger_enabled on;
    passenger_user app;
    passenger_sticky_sessions on;
    passenger_set_cgi_param MONGO_URL mongodb://localhost:27017/meteor;
    passenger_set_cgi_param MONGO_OPLOG_URL mongodb://localhost:27017/local;
    passenger_set_cgi_param ROOT_URL http://simple-wishes.com;

    # Set these ONLY if your app is a Meteor bundle!
    #passenger_app_type node;
    #passenger_startup_file main.js;
}

在我的 VPS 上,我运行这样的容器:
docker run -d -p 80:80 -p 2200:22 sohape/simplewishes

这会从 DockerHub 中拉取镜像并以守护程序模式启动容器,将端口 80 和 22 映射到主机上的端口 80 和 2200。

当我现在向服务器发出 HTTP 请求时( http://simple-wishes.com ),我从 nginx 收到一个错误:
502 Bad Gateway

我必须在这里遗漏一些步骤,但我不知道是什么。所以我希望有人能指出我正确的方向。

最佳答案

Docker 容器内的本地主机与外部的本地主机不同。您可能想使用 --link如果 MongoDB 在其自己的容器中或使用众所周知的 DNS 条目,则链接容器。

关于nginx - 使用 Docker 和 phusion-passenger 部署 Meteor 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26752033/

相关文章:

ssl - Nginx配置导致无休止的重定向循环

amazon-web-services - 如何使用 AWS、Docker、Nginx + Daphne 在生产中正确配置 Django Channels?

meteor - mup设置: Error: Timed out while waiting for handshake

meteor - 如何在 Meteor 中系统地为新文档添加时间戳?

android - Meteor:如何将 native 移动应用程序指向已部署的服务器

ruby-on-rails - 如何在一个域(和子域)上提供多个 Rails 应用程序?

ruby-on-rails - Ruby/Rails Apache2 和 Passenger 设置返回目录列表

ruby-on-rails - nginx + unicorn + Rails + 流媒体

ruby-on-rails - Heroku 上的 Rails + Passenger : How to set expiry date or a maximum age in the HTTP headers for static resources?

amazon-web-services - 强制 WWW 支持 AWS EC2 负载均衡器