den*_*tra 9 ruby postgresql ruby-on-rails docker docker-compose
我正在运行两个码头集装箱.一个带有rails,一个带有Postgres db.这是我的docker-compose文件:
# Docs: https://docs.docker.com/compose/compose-file/
version: '2'
services:
db:
image: postgres
environment:
- POSTGRES_PASSWORD=xxx
rails:
build: .
command: rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/app
ports:
- "3000:3000"
links:
- db
depends_on:
- db
Run Code Online (Sandbox Code Playgroud)
这里是rails app的Dockerfile:
FROM ruby:2.3
RUN apt-get update
RUN apt-get install -y build-essential nodejs
RUN mkdir -p /app
WORKDIR /app
COPY Gemfile Gemfile.lock ./
RUN gem install bundler && bundle install --jobs 20 --retry 5
COPY . ./
EXPOSE 3000
ENTRYPOINT ["bundle", "exec"]
CMD ["rails", "server", "-b", "0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)
当我运行docker-compose up一切正常,我可以通过docker-machine的ip地址连接到服务器.
当我尝试使用以下命令连接到容器时:
docker-compose run rails console
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Could not find rake-11.1.2 in any of the sources
Run `bundle install` to install missing gems.
Run Code Online (Sandbox Code Playgroud)
容器内的bundle install没有效果,所提到的gem肯定是安装好的.在其他堆栈溢出问题中提到我应该运行bin/spring stop.所以我跑了:
docker-compose run bin/spring stop
Run Code Online (Sandbox Code Playgroud)
它返回:
Spring is not running
Run Code Online (Sandbox Code Playgroud)
我仍然是ruby/rails和docker的新手.我希望有人可以帮助我!提前致谢
PS:对Dockerfiles的评论表示赞赏!
似乎回复晚了,但无论如何我都会回答。我有根据的猜测是,您Gemfile.lock正在固定您的rake版本,这就是它抱怨的原因。docker build如果您在没有像您中那样定义卷的情况下运行,docker-compose.yml您很容易就会像这样结束。所以试试吧。
关于您的Dockerfile:如果您仅将其用于开发目的,那么这可能没问题。否则,您应该考虑使用不同的用户运行它(相应地创建用户并useradd运行RUN任务等)。您可能还想使用一些捆绑程序功能,例如该--path=<path>选项。
| 归档时间: |
|
| 查看次数: |
2203 次 |
| 最近记录: |