I'm trying to use docker to push my existing rails project to a docker container.
I'm using postgres database.
When I did $> docker-compose up
I get following error in the logs.
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
You don't need two instruction in your Dockerfile
, just use docker-compose for overwrite postgres enviroments images.
You can try this:
# 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
Now in your docker-compose.yml
(I use v1 version) you can try that:
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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.