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命令:
匹配DockerENTRYPOINT
,和args:
匹配CMD
,令人困惑;但您显示的内容没有ENTRYPOINT
)@kirqe您能详细说明您的解决方案并将其作为答案发布吗?它可能会帮助其他社区成员。
containers:
- name: {{ .Values.app.name }}
image: {{ .Values.app.container.image }}
command:
- bundle
- exec
- puma
args:
- "-C"
- "config/puma.rb"