我正在尝试将 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/