如何使用Kubernetes在Cloud Containers Engine的Container开头运行脚本

mkh*_*tib 4 docker kubernetes google-kubernetes-engine dockerfile

我正在尝试使用Kubernetes在Google Cloud Containers上运行的docker容器的开头运行shell脚本.我的app目录的结构是这样的.我想在容器的开头运行prod_start.sh脚本(我不想把它作为Dockerfile的一部分).当前设置无法启动容器Command not found file ./prod_start.sh does not exist.知道如何解决这个问题吗?

app/
  ...
  Dockerfile
  prod_start.sh
  web-controller.yaml
  Gemfile
  ...
Run Code Online (Sandbox Code Playgroud)

Dockerfile

FROM ruby
RUN mkdir /backend
WORKDIR /backend
ADD Gemfile /backend/Gemfile
ADD Gemfile.lock /backend/Gemfile.lock
RUN bundle install
Run Code Online (Sandbox Code Playgroud)

网络controller.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: backend
  labels:
    app: myapp
    tier: backend
spec:
  replicas: 1
  selector:
    app: myapp
    tier: backend
  template:
    metadata:
      labels:
        app: myapp
        tier: backend
    spec:
      volumes:
      - name: secrets
        secret:
          secretName: secrets
      containers:
      - name: my-backend
        command: ['./prod_start.sh']
        image: gcr.io/myapp-id/myapp-backend:v1
        volumeMounts:
        - name: secrets
          mountPath: /etc/secrets
          readOnly: true
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 80
          name: http-server
Run Code Online (Sandbox Code Playgroud)

mkh*_*tib 5

经过大量的实验,我相信将脚本添加到Dockerfile:

ADD prod_start.sh /backend/prod_start.sh
Run Code Online (Sandbox Code Playgroud)

然后在yaml控制器文件中调用这样的命令:

command: ['/bin/sh', './prod_start.sh']
Run Code Online (Sandbox Code Playgroud)

固定它.