Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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 无法使用kubernets部署yam文件的命令/args部分向kubernetes中的puma提供配置文件_Ruby On Rails_Docker_Kubernetes_Sinatra - Fatal编程技术网

Ruby on rails 无法使用kubernets部署yam文件的命令/args部分向kubernetes中的puma提供配置文件

Ruby on rails 无法使用kubernets部署yam文件的命令/args部分向kubernetes中的puma提供配置文件,ruby-on-rails,docker,kubernetes,sinatra,Ruby On Rails,Docker,Kubernetes,Sinatra,部署无法查看配置文件的原因可能是什么 这是部署的一部分 command: ["bundle", "exec", "puma", "-C", "config/puma.rb"] already tried with ./config/.. and using args instead of command 我得到的是Errno::enoint:没有这样的文件或目录@rb\u sysopen-co

部署无法查看配置文件的原因可能是什么

这是部署的一部分

command: ["bundle", "exec", "puma", "-C", "config/puma.rb"]

already tried with ./config/.. and using args instead of command
我得到的是
Errno::enoint:没有这样的文件或目录@rb\u sysopen-config/puma.rb

docker compose过去一切正常

当我保留下面Dockerfile中的最后一行(CMD)并在部署中省略
命令:
时,一切正常
但是,为了重用sidekiq的映像,我需要提供配置文件

Dockerfile

FROM ruby:2.7.2

RUN apt-get update -qq && apt-get install -y build-essential ca-certificates libpq-dev nodejs postgresql-client yarn vim -y

ENV APP_ROOT /var/www/app

RUN mkdir -p $APP_ROOT

WORKDIR $APP_ROOT

COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock
COPY public public/
RUN gem install bundler
RUN bundle install

# tried this
COPY config config/ 

COPY . .

EXPOSE 9292

# used to have this line but I want to reuse the image
# CMD ["bundle", "exec", "puma", "-C", "config/puma.rb"]
错误消息

bundler: failed to load command: puma (/usr/local/bundle/bin/puma)
Errno::ENOENT: No such file or directory @ rb_sysopen - config/puma.rb
upd

这个问题似乎与错误的路径以及对命令和args字段的误解有关。下面的配置适合我。docker也可能存在缓存问题(发生在我之前)


出于某种原因,在
values.yaml
中提供命令似乎无法正常工作

但是,当通过模板提供命令时,它可以工作

我的应用程序的
app/templates/deployment.yaml
中有以下部分。现在一切都好了

      containers:     
        - name: {{ .Values.app.name }}
          image: {{ .Values.app.container.image }}        
          command: 
            - bundle
            - exec
            - puma
          args:
            - "-C"
            - "config/puma.rb"        
我还发现了这个k8s rails演示


正如您所看到的,commans部分是通过
模板/./name.yaml
而不是
值提供的。yaml

尝试
复制配置$APP\u ROOT/config/
我想使用
WORKDIR
复制
已复制此文件夹当我在部署内部不使用
命令时,以及当我将CMD保留在dockerfile底部时,此图像工作正常。它也适用于docker compose(但我在那里使用了
context:build
),这不是在docker文件中复制的问题。您的部署规范中是否有任何
volumeMounts:
或任何其他会更改容器文件系统的内容?这应该没有什么区别,但将
命令:
更改为
参数:
是否有帮助?(Kubernetes
命令:
匹配Docker
ENTRYPOINT
,和
args:
匹配
CMD
,令人困惑;但您显示的内容没有
ENTRYPOINT
)@kirqe您能详细说明您的解决方案并将其作为答案发布吗?它可能会帮助其他社区成员。
      containers:     
        - name: {{ .Values.app.name }}
          image: {{ .Values.app.container.image }}        
          command: 
            - bundle
            - exec
            - puma
          args:
            - "-C"
            - "config/puma.rb"