如何访问在 docker 容器内运行的 rails 应用程序
how to access rails app runing inside docker container
我正在使用 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 中与 运行 tcp://0.0.0.0:3000
在 rails 中存在冲突。所以我将我的应用程序服务器从 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 :)
即兴建议:
尝试:
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
我正在使用 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 中与 运行 tcp://0.0.0.0:3000
在 rails 中存在冲突。所以我将我的应用程序服务器从 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 :)
即兴建议:
尝试:
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