【问题标题】:Docker rails projectDocker 轨道项目
【发布时间】:2015-08-13 12:27:13
【问题描述】:

最近使用docker-compose upDockerfile 给了我以下错误,我无法弄清楚为什么会这样。我已经搜索了几个小时无济于事。有人知道为什么会发生这种情况吗?

无法启动容器 e3de3c07767357b73dd0b6c4a6c6aaefa046e87c50e35a0bcc1fcba010xx8xx:[8] 系统错误:exec:“/srv/myapp/bundle”:stat /srv/myapp/bundle:没有这样的文件或目录

FROM ruby:2.2.0
EXPOSE 80
EXPOSE 22
ENV RAILS_ENV production
ENV TERM xterm
ENV FFMPEG_VERSION=2.7.1 \
    X264_VERSION=snapshot-20150627-2245-stable

RUN \
  apt-get -y update && \
  apt-get install -y nginx && \
  apt-get install -y lynx && \
  apt-get install -y nano && \
  apt-get -y install curl build-essential && \
  apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev && \
  apt-get clean && \
  rm -rf /var/lib/apt/lists/*


# --------------------------------------
# HOME FOLDER
# --------------------------------------
WORKDIR                             /srv/myapp

ADD . /srv/myapp
ADD ./Gemfile                       /srv/myapp/Gemfile
ADD ./Gemfile.lock                  /srv/myapp/Gemfile.lock
#RUN mkdir                          /srv/myapp
RUN /srv/myapp
RUN gem install bundle
RUN bundle install --without development test
#RUN bundle install foreman
RUN bundle exec rake assets:precompile --trace
RUN gem install eye


# --------------------------------------
# UNICORN AND NGINX
# --------------------------------------
RUN ln -s /srv/myapp/config/_server/unicorn /etc/init.d/unicorn
RUN chmod +x /etc/init.d/unicorn
RUN update-rc.d unicorn defaults
RUN mkdir /tmp/sockets/
RUN touch /tmp/sockets/unicorn.sock
RUN chmod 777 /tmp/sockets/unicorn.sock

RUN rm /etc/nginx/nginx.conf
RUN rm /etc/nginx/sites-enabled/default
RUN ln -s /srv/myapp/config/_server/nginx.conf /etc/nginx/nginx.conf
RUN ln -s /srv/myapp/config/_server/default /etc/nginx/sites-enabled/default

【问题讨论】:

  • 能否请您提供您的Dockerfile 内容?它说它找不到/srv/myapp/bundle 可执行文件。可能它不再存在于您生成的图像上?
  • 它说/srv/myapp/bundle 不存在。可以?从您的问题中不清楚您是否已确认这一点。
  • 以上 cmets 确实是正确的。我发布了 dockerfile

标签: docker docker-compose


【解决方案1】:

你的Dockerfile有几个问题:

  1. 您应该像这样组合apt-get install 部分:

    RUN \
        apt-get -y update \
        && apt-get install -y --force-yes nginx lynx nano curl build-essential autoconf automaker libass-dev libfreetype6-dev \
        && apt-get clean \
        && rm -rf /var/lib/apt/lists/*
    
  2. RUN /srv/myapp 不起作用,因为那是一个目录。

  3. 有错别字吗?你可能想试试RUN gem install bundler,而不是RUN gem install bundle

最后,有了Dockerfile,我无法重现“没有这样的文件或目录”错误。因此我需要你的 rake 文件:

Step 13 : RUN bundle exec rake assets:precompile --trace
 ---> Running in f213d5dbfbca
rake aborted!
No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)
/usr/local/lib/ruby/2.2.0/rake/application.rb:684:in `raw_load_rakefile'
/usr/local/lib/ruby/2.2.0/rake/application.rb:94:in `block in load_rakefile'
/usr/local/lib/ruby/2.2.0/rake/application.rb:176:in `standard_exception_handling'
/usr/local/lib/ruby/2.2.0/rake/application.rb:93:in `load_rakefile'
/usr/local/lib/ruby/2.2.0/rake/application.rb:77:in `block in run'
/usr/local/lib/ruby/2.2.0/rake/application.rb:176:in `standard_exception_handling'
/usr/local/lib/ruby/2.2.0/rake/application.rb:75:in `run'
/usr/local/bin/rake:33:in `<main>'
The command '/bin/sh -c bundle exec rake assets:precompile --trace' returned a non-zero code: 1

【讨论】:

  • 感谢您的回复,非常感谢!在调试并添加了几个工具(如 nano lateron)后,dockerfile 尚未优化,将它们结合起来的好点没注意到。
【解决方案2】:

docker-rails 是我刚刚创建的一个项目,用于使用 docker(和 CI)制作 Rails 非常简单。我认为它可以帮助您并减少在 docker 上使用 rails 启动和运行所需的配置量。

查看development 配置以获取想法,同时查看wiki 以获取先决条件/设置。如果你在 OSX 上,小艇非常有帮助,而 ubuntu 在大多数情况下只是一个普通的设置(尽管你可能需要调整该页面上提到的 UFW)。

【讨论】:

    猜你喜欢
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多