无法使用Docker Compose运行rails控制台

joe*_*oes 7 ruby-on-rails ruby-on-rails-4 docker docker-compose

我是Docker的新手,并开始使用Docker Compose在我的OS X 10.10机器上开发我的rails 4应用程序.rails应用程序工作正常,但如果我尝试使用以下命令运行rails控制台:

docker-compose run web bundle exec rails console
Run Code Online (Sandbox Code Playgroud)

要么

docker-compose run web rails console
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

无法在任何源代码中找到CFPropertyList-2.3.1运行bundle install以安装缺少的gem.

我尝试过docker-compose run web bundle install,但我继续得到同样的错误.这背后的原因是什么?下面是我的Dockerfile和docker-compose.yml.

Dockerfile

FROM ruby:2.2.0

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs npm nodejs-legacy
RUN npm install -g phantomjs

RUN mkdir /myapp
WORKDIR /myapp

ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock

RUN bundle install
ADD . /myapp
Run Code Online (Sandbox Code Playgroud)

泊坞窗,compose.yml

version: '2'
services:
  db:
    image: postgres
  mailcatcher:
    image: yappabe/mailcatcher
    ports:
      - "1025:1025"
      - "1080:1080"
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    links:
      - db
      - mailcatcher
Run Code Online (Sandbox Code Playgroud)

小智 21

您必须在根文件夹中使用:

docker-compose exec web rails console
Run Code Online (Sandbox Code Playgroud)


bje*_*lli 4

要访问 Rails 控制台,您需要 docker 命令,而不是 docker-compose。第一次运行

docker ps
Run Code Online (Sandbox Code Playgroud)

查找容器 ID(例如 916703608c5e),然后使用该容器 ID 运行 docker exec:

docker exec -ti 916703608c5e rails console production
Run Code Online (Sandbox Code Playgroud)