2016-05-15 8 views
6

Używam dwóch kontenerów doków. Jedna z szynami i jedna z dbem Postgres. Oto mój plik doker-komponować:Nie można odnaleźć prowizji rake-11.1.2 w kontenerze szyny

# 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 

tu Dockerfile dla aplikacji szyn:

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"] 

Kiedy biegnę docker-compose up wszystko działa poprawnie i mogę połączyć się z serwerem za pomocą adresu IP, z doker-maszyna.

Kiedy próbuję połączyć się z pojemnika za pomocą następującego polecenia:

docker-compose run rails console 

otrzymuję ten błąd:

Could not find rake-11.1.2 in any of the sources 
Run `bundle install` to install missing gems. 

wiązka instalacji wewnątrz pojemnika ma żadnego efektu, a wspomniane gem jest zdecydowanie zainstalowany. W innych pytaniach dotyczących przepełnienia stosu wspomniano, że powinienem uruchomić bin/spring stop. Więc wpadłem:

docker-compose run bin/spring stop 

I powraca:

Spring is not running 

nadal jestem comparibly nowy w Ruby/szyny i docker. Mam nadzieję, że ktoś mi w tym pomoże! Z góry dziękuję

PS: Komentarze do plików Docker są mile widziane!

+0

Mam dokładnie ten sam problem! – JacobEvelyn

Odpowiedz

1

wydaje się być spóźnioną reakcją, ale ja i tak odpowiem. Domyślam się, że Twój Gemfile.lock przypina Twoją wersję rake i dlatego narzeka. Jeśli uruchomisz docker build bez woluminu zdefiniowanego jak w twoim docker-compose.yml, możesz łatwo skończyć w ten sposób. Więc, spróbuj.

W odniesieniu do Twojego Dockerfile: Jeśli używasz tego tylko do celów programistycznych, może to być w porządku. W przeciwnym razie powinieneś pomyśleć o uruchomieniu go przy użyciu innego użytkownika (utwórz użytkownika z useradd i wykonaj zadania RUN i tak dalej). Możesz także skorzystać z niektórych funkcji bundlerów, takich jak opcja --path=<path>.

+0

Próbowałem ustawić użytkownika, to nie działa. pakiet install teraz zgłasza błąd uprawnień dla nowego użytkownika –

0

Mieliśmy dokładnie ten sam problem. Mimo że Spring powiedział, że to nie działa, mój kolega wskazał mi, że gdybym spojrzał na bin/rails, zobaczyłbym, że w rzeczywistości byłby uruchomiony z Railsami. Usunięcie klejnotów związanych z spring w Gemfile rozwiązało problem.

Powiązane problemy