如何访问在Docker容器中运行的Rails应用

时间:2018-12-06 12:36:53

标签: ruby-on-rails ruby-on-rails-5 dockerfile puma

我正在使用Dockerfile为基本的Rails博客应用构建Docker容器。 这是我的Dockerfile

FROM ruby:2.3

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        postgresql-client \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /usr/src/app
COPY Gemfile* ./
RUN bundle install
COPY . .

EXPOSE 8000
CMD rails server -p 8000 -b 0.0.0.0 

然后我运行此命令来构建docker映像

docker build -t blog .

这是我如何从docker映像运行容器

docker run -d -e POSTGRES_USER=$POSTGRES_USER -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD --net=blog --name app -v $PWD:/usr/src/app -p 8000:8000 blog

从容器访问日志后,我得到了

docker logs app
=> Booting Puma
=> Rails 5.1.6.1 application starting in development 
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.0 (ruby 2.3.8-p459), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

在谷歌搜索2个小时后,我听到一些点击,表明它在Rails 5.1中发生冲突,该冲突在Rails中运行tcp://0.0.0.0:3000。因此,我将应用程序服务器从PUMA切换到WEBRICK。 现在Docker日志应用显示:

docker logs app
[2018-12-06 12:30:10] INFO  WEBrick 1.3.1
[2018-12-06 12:30:10] INFO  ruby 2.3.8 (2018-10-18) [x86_64-linux]
[2018-12-06 12:30:10] INFO  WEBrick::HTTPServer#start: pid=8 port=3000

,但仍无法从firefoix / chrom访问该应用程序。 如果我做错了,请指导。 TIA:)

1 个答案:

答案 0 :(得分:2)

只是建议:

尝试:

docker run -d -e POSTGRES_USER=$POSTGRES_USER -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD --net=blog --name app -v $PWD:/usr/src/app -p 3000:3000 blog

如果您可以解决可能未按预期应用的情况。

EXPOSE 8000
CMD rails server -p 8000 -b 0.0.0.0