2016-10-06 12 views
0

저는 padrino에서 꽤 새로 생겼습니다. 그래서 잠시 동안 고민하고 있었고 실제로 저를 차단하고 있습니다.Errno :: ENOENT 얻기 : 도커에 데이터베이스를 만들 때 padrino API에 createdb와 같은 파일이나 디렉토리가 없습니다.

내가하려고하는 것은 내 프런트 엔드 동료가 사용할 수 있도록하기 위해 내 padrino 프로젝트를 도화하여 컴퓨터를 설정하는 데 많은 시간을 할애 할 필요가 없다는 것입니다. 나는 다음과 같은 예외를 제기 docker-compose run web bundle exec rake sq:create 작업을 실행하려고 할 때

문제는 온다 :

=> Creating database 'my_database_dev' 
rake aborted! 
Errno::ENOENT: No such file or directory - createdb 
/usr/local/bundle/gems/padrino-gen-0.13.2/lib/padrino-gen/padrino-tasks/sql-helpers.rb:18:in `spawn' 
/usr/local/bundle/gems/padrino-gen-0.13.2/lib/padrino-gen/padrino-tasks/sql-helpers.rb:18:in `create_db' 
/usr/local/bundle/gems/padrino-gen-0.13.2/lib/padrino-gen/padrino-tasks/sequel.rb:52:in `block (2 levels) in <top (required)>' 
/usr/local/bundle/gems/rake-11.3.0/exe/rake:27:in `<top (required)>' 
/usr/local/bin/bundle:22:in `load' 
/usr/local/bin/bundle:22: 

그 예외가 짝수의 dockerized 포스트 그레스 이미지에 해당 DATABASE_URL=postgres://pg_pass:[email protected]:2345/my_database_dev를 사용하여 내 고정 표시기 시스템에서 발생하는 내 로컬 .env 파일은 모두 예상대로 실행되므로 Dockerfile에 누락 된 부분이 있다고 생각됩니다.

version: '2' 
services: 
db: 
    image: postgres:latest 
    ports: 
    - "2345:5432" 
    environment: 
    - POSTGRES_PASSWORD=pg_pass 
    - POSTGRES_USER=pg_user 
web: 
    build: . 
    command: bundle exec padrino s -p 3000 -h '0.0.0.0' 
    ports: 
    - "3000:3000" 
    volumes: 
    - .:/app 
    depends_on: 
    - db 
    links: 
    - db:db 
    environment: 
    - DATABASE_URL=postgres://pg_pass:[email protected]:2345/my_database_dev 

가 사전에 감사

FROM ruby:2.2.5 
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev 
RUN mkdir /app 
WORKDIR /app 
ADD Gemfile /app/Gemfile 
ADD Gemfile.lock /app/Gemfile.lock 
RUN bundle install 
ADD . /app 

내 고정 표시기-작성 파일 :

내 Dockerfile은 다음과 같습니다!

답변

3

몇 시간 전에 바로 이와 같은 문제가 발생했습니다. 이 오류 (Errno::ENOENT: No such file or directory - createdb)는 web 컨테이너가 Postgres에서 제공하는 스크립트 인 createdb를 찾을 수 없음을 나타냅니다. 이 문제를 해결하려면

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev postgresql-client 

docker-compose build web 

당신의 web 컨테이너를 재 구축하고 DB 생성을 & 마이그레이션을 다시 실행하여 Dockerfile에 postgresql-client를 추가

docker-compose run web bundle exec rake sq:create 
docker-compose run web bundle exec rake sq:migrate