2016-02-04 3 views
1

У меня есть ошибка о моей Gemfile или расслоение, когда я запускаю некоторые задачи, как это одна:докер-Compose ошибка, когда я бегу пакет

docker exec -it webapp_web_1 bundle exec rake db:migrate 

ошибка: Не удалось обнаружить Gemfile или .bundle/каталог

или эта команда:

docker-compose logs worker 

log: 
Attaching to webapp_worker_1 
worker_1 | Could not locate Gemfile or .bundle/ directory 

Dockerfile:

# === 1 === 
FROM phusion/passenger-ruby22:0.9.18 
MAINTAINER Israel Barba Aceves "[email protected]" 

# Set correct environment variables. 
ENV HOME /root 

RUN apt-get update && apt-get install -y libqt4-dev libqtwebkit-dev imagemagick 

# Use baseimage-docker's init system. 
CMD ["/sbin/my_init"] 


# === 2 === 
# Start Nginx/Passenger 
RUN rm -f /etc/service/nginx/down 

# === 3 ==== 
# Remove the default site 
RUN rm /etc/nginx/sites-enabled/default 


# Add the nginx info 
ADD webapp.conf /etc/nginx/sites-enabled/webapp.conf 

# === 4 === 
# Prepare folders 
RUN mkdir /home/app/webapp 



# === 5 === 
# Run Bundle in a cache efficient way 
WORKDIR /tmp 
ADD Gemfile /tmp/ 
ADD Gemfile.lock /tmp/ 
RUN bundle install 


#WORKDIR /webapp 
#RUN RAILS_ENV=staging rake assets:precompile --trace 

# === 6 === 
# Add the rails app 
ADD . /home/app/webapp 

RUN mkdir /home/app/webapp/tmp/cache/assets/staging 
RUN mkdir /home/app/webapp/tmp/cache/assets/staging/sprockets 
# RUN chown -R app:app /home/app/webapp/tmp/cache/assets/staging 
RUN chown -R app:app /home/app/webapp 

#RAILS_ENV=staging rake assets:precompile 


# Clean up APT when done. 
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 

докер-compose.yml

db: 
    image: postgres 
    ports: 
    - "5432" 
    volumes: 
    - ytp-postgres:/var/lib/postgresql/data 

redis: 
    image: redis 
    ports: 
    - "6379" 
    volumes: 
    - ytp-redis:/var/lib/redis/data 


web: 
    build: . 
    volumes: 
    - .:/web 
    ports: 
    - "80" 
    links: 
    - redis 
    - db 
    environment: 
    RACK_ENV: staging 
    RAILS_ENV: staging 

worker: 
    build: . 
    volumes_from: 
    - web 
    command: bundle exec sidekiq -e s -c 5 -C config/sidekiq.yml 
    environment: 
    RAILS_ENV: staging 
    links: 
    - redis 
    - db 

Также я не могу начать Sidekiq из моей конфигурации, я предполагаю, что это что-то об объемах, но я не уверен, я редактировал этот файл во многих отношениях без успеха ... Любые предложения?

версия Docker: 1.9.1

Докер-Compose версия 1.6.0rc2

Спасибо.

+0

Что происходит, когда вы запускаете «Докер-Compose запустить веб-пакет EXEC грабли БД: мигрировать»? – TopperH

+0

такая же ошибка: не удалось найти каталог Gemfile или .bundle /. Мне нужно запускать миграции внутри контейнера. –

+0

Кроме того, sidekiq - это жемчужина вашего проекта, есть ли причина, по которой вы запускаете его в отдельном контейнере? Поскольку ваш веб-контейнер уже связан с redis, я предлагаю использовать sidekiq из вашего веб-контейнера и использовать мастера для запуска sidekiq и сервера rails вместе. – TopperH

ответ

2

Вы должны изменить последнюю часть вашего Dockerfile, чтобы соответствовать папкам вашего файла Docker создания сообщения:

WORKDIR /web 
ADD Gemfile /web/ 
ADD Gemfile.lock /web/ 
RUN bundle install 
+0

Большое спасибо! это было решение! что-то очень простое –

+0

@israel Если это решение работает для вас, пожалуйста, примите его. – TopperH

+0

@TopperH это сработало для меня, но я не могу это объяснить - можете ли вы указать мне на какие-либо документы, чтобы понять это больше? – mattsch

Смежные вопросы