【发布时间】:2017-07-08 17:31:48
【问题描述】:
我正在处理我需要的场景: 1. nginx在宿主机上运行 2. 在 docker 容器中运行的 rails 应用程序
我最初的工作包括将 Dockerfile 添加到主机上的 rails app 目录中,如下所示:
ubuntu@ubuntu-xenial:~/rails_docker$ cat Dockerfile
FROM ruby:2.1-onbuild
ENV HOME /home/rails/webapp
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
WORKDIR $HOME
# Install gems
ADD Gemfile* $HOME/
RUN bundle install
# Add the app code
ADD . $HOME
EXPOSE 8080
EXPOSE 5432
由于我已经在主机上安装了 nginx,它被配置为查看主机上存在 rails 应用程序的目录:
ubuntu@ubuntu-xenial:~$ cat /etc/nginx/sites-available/www.testblog.io.conf
# MANAGED BY PUPPET
server {
listen *:8080;
server_name www.testblog.io;
index index.html index.htm index.php;
access_log /var/log/nginx/www.testblog.io.access.log combined;
error_log /var/log/nginx/www.testblog.io.error.log;
location / {
root /home/ubuntu/rails_docker/public;
index index.html index.htm index.php;
}
passenger_enabled on;
passenger_ruby /usr/local/rvm/wrappers/default/ruby;
}
我能够构建 docker 映像,我的下一个想法如下: 1.在运行“rails container”时将/home/ubuntu/rails_docker声明为主机卷 2. 公开8080:8080和5432:5432端口
我使用的命令如下:
ubuntu@ubuntu-xenial:~/rails_docker$ docker run -d -p 8080:8080 --name examplerails -v /home/ubuntu/rails_docker:/home/rails/webapp railsapptest
82c8aa45b8c1a405e198a565feabf105d1afcbb1c37f8b7b11bf764395ed8c4e
当我查看日志时:
ubuntu@ubuntu-xenial:~/rails_docker$ docker logs -f examplerails
Switch to inspect mode.
由于某种原因,它进入了 irb 模式。知道我做错了什么吗?
提前致谢, 巴基尔
【问题讨论】:
标签: ruby-on-rails nginx docker