【问题标题】:dockerfile and kubernetes jobs ( assistance needed)dockerfile 和 kubernetes 工作(需要帮助)
【发布时间】:2022-01-08 21:43:06
【问题描述】:

我有我的 dockerfile,我在其中使用了 postgres:12 映像,我使用一些 ddl 脚本对其进行了修改,然后我构建了这个映像,我可以通过 docker run 命令运行容器,但是我如何使用 Kubernetes 作业来运行构建图片,因为我在 k8s 上没有很好的经验。

这是我的 dockerfile 在这里你可以看到它。

码头工人建造。 -t dockerdb

FROM postgres:12 

ENV POSTGRES_PASSWORD xyz@123123!233 

ENV POSTGRES_DB test 

ENV POSTGRES_USER test 

COPY ./Scripts /docker-entrypoint-initdb.d/

如何使用以下要求自定义以下代码

apiVersion: batch/v1
      kind: Job
      metadata:
        name: job-1
      spec:
        template:
          metadata:
            name: job-1
          spec:
            containers:
            - name: postgres
              image: gcr.io/project/pg_12:dev
              command:
              - /bin/sh
              - -c
              - "not sure what command should i give in last line" 

【问题讨论】:

    标签: kubernetes dockerfile kubernetes-jobs


    【解决方案1】:

    不确定你是如何运行 docker 镜像的

    如果您在不传递任何命令的情况下运行 docker 映像,则可以直接在 Job 中运行该映像。

    docker run <imagename>
    

    一旦您的 Dockerimage 准备就绪并构建,您就可以直接运行它

    您的作业将在不传递任何命令的情况下执行

    apiVersion: batch/v1
          kind: Job
          metadata:
            name: job-1
          spec:
            template:
              metadata:
                name: job-1
              spec:
                containers:
                - name: postgres
                  image: gcr.io/project/pg_12:dev
    

    如果您想传递任何可以进一步传递的参数命令

    apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: hello
    spec:
      schedule: "*/1 * * * *"
      jobTemplate:
        spec:
          template:
            spec:
              containers:
              - name: hello
                image: <CHANGE IMAGE URL>
                imagePullPolicy: IfNotPresent
                command:
                - /bin/sh
                - -c
                - date; echo Hello from the Kubernetes cluster
              restartPolicy: OnFailure
    

    只是为了更新上面的模板是针对 Cronjob 的,Cronjob 在特定的时间运行。

    【讨论】:

    • 一个尖锐的问题,在命令部分为了运行 dockerimage 我可以像 kubectl run dockerdb --image=dockerdb 一样给出,或者我应该使用你给它的选项,它会运行正确的图像?我在构建后运行 docker 镜像 docker run --name postgresdb -p 5432:5432 -e POSTGRES_PASSWORD=xyz@123123!233i-d dockerdb
    • 不确定您实际上要运行什么,看起来您很困惑。您可以运行并应用 yaml,该 yaml 将在您的图像运行的内部创建作业。
    • 是的,我是 k8s 的新手,现在我知道什么时候会使用 run 并应用它会为我做这件事,tnx 理解 :)
    • 如果以上答案有帮助,请不要忘记给答案投票,如果解决了您的问题,请标记它。
    猜你喜欢
    • 2021-12-09
    • 2022-01-07
    • 2017-09-22
    • 2015-02-11
    • 2011-02-25
    • 2021-08-08
    • 1970-01-01
    • 2019-12-18
    • 2020-11-15
    相关资源
    最近更新 更多