web_1 | /docker-entrypoint.sh:line 99:exec:bundle:not found app_web_1退出代码127

时间:2016-05-30 12:50:14

标签: ruby-on-rails postgresql docker

我正在尝试使用docker将我现有的rails项目推送到docker容器。

我正在使用postgres数据库。

当我做$> docker-compose up

我在日志中收到以下错误。

web_1  | /docker-entrypoint.sh: line 99: exec: bundle: not found
app_web_1 exited with code 127

-

# Dockerfile
FROM ruby:2.2.0
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN gem install bundler
RUN bundle install
ADD . /myapp

FROM postgres:9.4
#FROM library/postgres
ENV POSTGRES_USER my-user-name
ENV POSTGRES_PASSWORD ''
ENV POSTGRES_DB app-database-name

-

# docker-compose.yml
version: '2'
services:
  db:
    image: postgres
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

1 个答案:

答案 0 :(得分:1)

您在Dockerfile中不需要两条指令,只需使用docker-compose覆盖postgres环境图片。

你可以试试这个:

# Dockerfile
FROM ruby:2.2.3

# Update ubuntu and deps
RUN apt-get update -qq && apt-get install -y build-essential

# Install postgres dep
RUN apt-get install -y libpq-dev

# Install nokogiri dep
RUN apt-get install -y libxml2-dev libxslt1-dev

# Install JS runtime
RUN apt-get install -y nodejs

ENV APP_HOME /app
RUN mkdir $APP_HOME
WORKDIR $APP_HOME

ADD Gemfile* $APP_HOME/
# Install api deps
RUN bundle install --jobs 4

ADD . $APP_HOME

现在在docker-compose.yml(我使用的是v1版本)中,您可以尝试:

postgres:
  image: postgres
environment:
  POSTGRES_USER: my-user-name
  POSTGRES_PASSWORD: ''
  POSTGRES_DB: app-database-name

web:
  build: .
  command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -b '0.0.0.0'"
  environment:
    PORT: 3000
    DATABASE_URL: 'postgres://postgres:@postgres:5432/postgres'
  ports:
    - '3000:3000'
  link:
    - db
  volumes:
    - .:/app