【发布时间】:2015-01-01 08:09:36
【问题描述】:
我正在尝试将 Meteor 应用程序部署到我的 Ubuntu 14.04 (Trusty Tahr) VPS。我在 DockerHub 上使用私有 Docker 注册表,并从 Bitbucket 上的 Git 存储库中提取自动构建设置。这真的很管用。
但是,当我运行容器时,我无法看到 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://simple-wishes.com) 发出 HTTP 请求时,我收到来自 nginx 的错误:
502 Bad Gateway
我一定是在这里遗漏了一些步骤,但我不知道是什么。所以我希望有人能指出我正确的方向。
【问题讨论】:
标签: nginx meteor passenger docker