首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Docker和phusion-passenger部署Meteor应用程序

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

Stack Overflow用户
提问于 2014-11-05 15:48:56
回答 3查看 1.7K关注 0票数 2

我正在尝试将Meteor应用程序部署到我的Ubuntu 14.04 (Trusty ) VPS上。我在DockerHub上使用了一个私有的Docker注册表,并从我在Bitbucket上的Git存储库进行了自动构建设置。这真的很好用。

然而,当我运行我的容器时,我无法看到Meteor应用程序正在运行。我在他们的文档中读到了关于phusion-passenger和Meteor的内容,但我认为指南遗漏了什么,因为我无法让它工作。

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

代码语言:javascript
复制
meteor create simple-wishes

这将创建一个包含CSS、HTML和JavaScript文件的目录(以及一个.meteor文件夹)。在这个目录之外,我创建了一个Dockerfile,如下所示:

代码语言:javascript
复制
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文件如下所示:

代码语言:javascript
复制
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上,我运行一个容器,如下所示:

代码语言:javascript
复制
docker run -d -p 80:80 -p 2200:22 sohape/simplewishes

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

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

代码语言:javascript
复制
502 Bad Gateway

我肯定在这里漏掉了一些步骤,但我不知道是什么。所以我希望有人能给我指明正确的方向。

EN

回答 3

Stack Overflow用户

发布于 2014-11-06 05:22:28

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

票数 0
EN

Stack Overflow用户

发布于 2014-11-17 17:20:00

当您在没有捆绑应用程序的情况下运行Meteor时,Meteor将启动一个MongoDB实例,但不会在默认的MongoDB端口上运行。

检查堆栈溢出问题的答案。

票数 0
EN

Stack Overflow用户

发布于 2015-02-23 16:56:01

你可以尝试使用我的Docker镜像,看看它是如何设置的。要快速运行它,请使用以下命令(请确保首先对Meteor应用程序进行捆绑):

代码语言:javascript
复制
docker run -d \
    -e ROOT_URL=http://yourapp.com \
    -e MONGO_URL=mongodb://url \
    -e MONGO_OPLOG_URL=mongodb://oplog_url \
    -v /dir_containing_bundledir:/home/app/webapp \
    -p 80:80 \
    joostlaan/meteor-docker-passenger

你可以看到how I built it at GitHub

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26752033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档