第一本Docker书 5.2.1 sinatra容器问题解决

 这个问题卡了我两天,两天啊!两天啊!!!!!!!

一直报这个错.

第一本Docker书 5.2.1 sinatra容器问题解决

 exec user process caused "no such file or directory "

我想了想,可能是挂载卷的时候出的问题?

那么,我就尝试一下不使用挂载卷,我直接把文件copy过来

第一本Docker书 5.2.1 sinatra容器问题解决

 启动的时候也不用-v命令了 

就直接 docker run -p 4567 --name webapp xxxxx/sinatra

发现换了个报错.

第一本Docker书 5.2.1 sinatra容器问题解决

我不懂ruby,看这个样子,像是require ‘app‘这句话有问题

$:.unshift(File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))) 这句话的意思应该是找到lib目录下的文件

的确,lib目录下是有个app.rb的文件

我猜,难道是名字搞错了?于是我就改了一下 require ‘app.rb‘

发现还是同一个报错.

再仔细看一下,app.rb里面有个class App

第一本Docker书 5.2.1 sinatra容器问题解决

 那我们就不废话了 直接把这个文件里的东西拷贝过来得了,也不需要上面的那几句话了.

这就是webapp那个文件的完全体

第一本Docker书 5.2.1 sinatra容器问题解决

再次运行,OJBK

第一本Docker书 5.2.1 sinatra容器问题解决

 麻蛋气死我了.

顺便把那些文件都贴一贴吧,方便其他人少走弯路.

Dockerfile

FROM ubuntu:16.04
LABEL maintainer=""
ENV REFRESHED_AT 2020-01-29 11:51:00
RUN  sed -i /archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN  apt-get clean
#RUN echo nameserver 8.8.8.8 > /etc/resolv.conf
RUN apt-get update -o Acquire-by-hash=yes
RUN apt-get -yqq install ruby 2.6.5 ruby-dev build-essential redis-tools

RUN gem install --no-rdoc --no-ri sinatra json redis
RUN mkdir -p /opt/webapp/bin
EXPOSE 4567
COPY webapp/bin/webapp /opt/webapp/bin/
CMD ["/opt/webapp/bin/webapp"]

webapp

#!/usr/bin/ruby

require "rubygems"
require "sinatra"
require "json"

class App < Sinatra::Application

  set :bind, ‘0.0.0.0‘

  get ‘/‘ do
    "<h1>DockerBook Test Sinatra app</h1>"
  end

  post ‘/json/?‘ do
    params.to_json
  end

end

App.run!

app.rb不需要贴,因为根本就用不到了.

相关推荐