gpt4 book ai didi

ruby-on-rails - 如何使用kubernetes将Rails应用程序部署到Google容器引擎?

转载 作者:行者123 更新时间:2023-12-02 21:27:41 26 4
gpt4 key购买 nike

我尝试了许多方法将Rails应用程序构建为Docker镜像。并将其部署到Google容器引擎。但是直到现在,还没有人成功。

我的Dockerfile(在rails根路径下)

FROM ruby:2.2.2

RUN apt-get update -qq && apt-get install -y build-essential
RUN apt-get install -y nodejs

ENV APP_HOME /myapp
RUN mkdir $APP_HOME
WORKDIR $APP_HOME

ADD Gemfile $APP_HOME/Gemfile
ADD Gemfile.lock $APP_HOME/Gemfile.lock
ADD vendor/gems/my_gem $APP_HOME/vendor/gems/my_gem
ADD init.sh $APP_HOME/

RUN export LANG=C.UTF-8 && bundle install

ADD . $APP_HOME

CMD ["sh", "init.sh"]

我的init.sh
#!/bin/bash
bundle exec rake db:create db:migrate
bundle exec rails server -b 0.0.0.0

我的kubernetes配置文件
apiVersion: v1
kind: ReplicationController
metadata:
labels:
name: web
name: web-controller
spec:
replicas: 2
selector:
name: web
template:
metadata:
labels:
name: web
spec:
containers:
- name: web
image: gcr.io/my-project-id/myapp:v1
ports:
- containerPort: 3000
name: http-server
env:
- name: RAILS_ENV
value: "production"

在我用kubectl在gke上创建Web Controller 后:
kubectl create -f web-controller.yml

并查看pod日志:
kubectl logs web-controller-xxxxx

表明:
init.sh: 2: init.sh: bundle: not found
init.sh: 3: init.sh: bundle: not found

似乎找不到路径。那该怎么办?

最佳答案

您可以使用kubectl exec输入您的容器并打印环境。
http://kubernetes.io/v1.1/docs/user-guide/getting-into-containers.html

例如:
kubectl exec Web Controller xxxxx sh -c printenv

您还可以交互使用kubectl来确认 bundle 包在您的容器镜像中:

kubectl exec -ti Web Controller xxxxx sh

如果bundle在您的镜像中,则将其目录添加到init.sh中的PATH,或在每个命令中显式指定其路径。

关于ruby-on-rails - 如何使用kubernetes将Rails应用程序部署到Google容器引擎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33688696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com