linux - 在部署文件中运行终端命令

标签 linux docker kubernetes deployment

我想运行一个名为 rstudio 包管理器的应用程序。它有一些终端命令要在部署后运行。有没有办法在部署文件中添加这些命令?我尝试过这种方式,但我遇到了 crashloopback 错误。我对编写部署文件完全陌生。我做错了什么或弄乱了语法吗?

apiVersion: apps/v1 
kind: Deployment
metadata:
  name: rspm-deployment
spec:
  selector:
    matchLabels:
      app: rspm
  replicas: 1 
  template:
    metadata:
      labels:
        app: rspm
    spec:
      nodeSelector:
        kubernetes.io/hostname: nckaoepekin.local
      containers:
      - env:
        - name: RSPM_LICENSE
          value: my_license_key
        image: rstudio/rstudio-package-manager:latest
        name: rstudio-package-manager
        command: ["/bin/sh"]
        args: ["-c", "alias rspm='/opt/rstudio-pm/bin/rspm'; rspm create repo --name=prod-cran --description='Access CRAN packages'; rspm subscribe --repo=prod-cran --source=cran; rspm sync"]
        ports:
        - containerPort: 4242
        resources: {}
        securityContext:
          privileged: true
      restartPolicy: Always
status: {}

---
kind: Service
apiVersion: v1
metadata:
  name: rstudio-pm
spec:
  selector:
    app: rspm
  ports:
  - protocol: TCP
    port: 4242
    targetPort: 4242
    nodePort: 31010
  type: NodePort
我想添加这些终端命令(上面也指定)
alias rspm='/opt/rstudio-pm/bin/rspm'
rspm create repo --name=prod-cran --description='Access CRAN packages'
rspm subscribe --repo=prod-cran --source=cran
rspm sync
当我删除指定的命令和参数时,部署文件正在工作。但是当我添加命令和参数时,我得到了 crashloopback 错误。任何线索将不胜感激。谢谢

最佳答案

您可以使用 poststart Hook here

lifecycle:
  postStart:
    exec:
      command:
        - "sh"
        - "-c"
        - |
          alias rspm='/opt/rstudio-pm/bin/rspm' &&
          rspm create repo --name=prod-cran --description='Access CRAN packages'&&
          rspm subscribe --repo=prod-cran --source=cran &&
          rspm sync

关于linux - 在部署文件中运行终端命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62995128/

相关文章:

linux - 从 http 移动到 https : javax. xml.ws.soap.SOAPFaultException

linux - 如何在 Linux 中安排作业和传递参数并并行运行

c - Xlib 的全局热键

kubernetes - kubernetes在queue_size与运行的Pod数量上自动缩放

docker - KNative Service无法从Docker HUB下载Hello World镜像

linux - 如何在 awk 中使用 bash 命令

mongodb - docker 在不同的端口上运行 mongo 镜像

docker - 领事+领事代理

macos - 如何告诉 IntelliJ 不要检查 node_modules 或者映射 docker 路径以进行索引

kubernetes - 在Azure AKS中缩减群集大小时,能否确定 “cordoned”节点已删除?