Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 运行包时docker compose错误_Ruby On Rails_Docker_Redis_Sidekiq_Docker Compose - Fatal编程技术网

Ruby on rails 运行包时docker compose错误

Ruby on rails 运行包时docker compose错误,ruby-on-rails,docker,redis,sidekiq,docker-compose,Ruby On Rails,Docker,Redis,Sidekiq,Docker Compose,当我运行以下任务时,我的gemfile或bundle出现错误: docker exec -it webapp_web_1 bundle exec rake db:migrate 错误:找不到文件或.bundle/目录 或此命令: docker-compose logs worker log: Attaching to webapp_worker_1 worker_1 | Could not locate Gemfile or .bundle/ directory Dockerfile: #

当我运行以下任务时,我的gemfile或bundle出现错误:

docker exec -it webapp_web_1 bundle exec rake db:migrate
错误:找不到文件或.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 "israel@yotepresto.com"

# 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/*
docker-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

Docker compose版本1.6.0rc2


谢谢。

您必须修改docker文件的最后一部分,以匹配docker compose文件的文件夹:

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

当您运行docker compose run web bundle exec rake db:migrate时会发生什么情况?相同的错误:找不到Gemfile或.bundle/目录我必须在容器中运行迁移同样,sidekiq是您项目中的一个gem,您为什么要在单独的容器中运行它?由于您的web容器已经链接到redis,我建议使用web容器中的sidekiq,并使用foreman一起运行sidekiq和rails服务器。性能好吗?我会考虑这个解决方案,我想知道为什么像RAKE这样的其他任务会引起错误?@ TopPurh对我来说是有效的,但是我不能解释它——你能指点我任何文档来理解这一点吗?无论如何,这个配置已经过时了,现在我会坚持使用官方ruby容器,并按照官方文档设置docker compose文件