1. ホーム
  2. python

[解決済み] standard_init_linux.go:211: exec ユーザープロセスが "exec format error" を引き起こしました。

2022-02-17 09:08:54

質問

私は、minikube Windows 10システムで実行されるPythonスクリプトのDockerfileを構築しています。

以下のコマンドでドッカーを構築します。 docker build -t python-helloworld .

で、それをminikubeのdocker demonで読み込む。 docker save python-helloworld | (eval $(minikube docker-env) && docker load)

Dockerファイル

FROM python:3.7-alpine
#add user group and ass user to that group
RUN addgroup -S appgroup && adduser -S appuser -G appgroup

#creates work dir   
WORKDIR /app

#copy python script to the container folder app
COPY helloworld.py /app/helloworld.py

#user is appuser
USER appuser

ENTRYPOINT  ["python", "/app/helloworld.py"]

pythoncronjob.yml ファイル (cron ジョブファイル)

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: python-helloworld
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      backoffLimit: 5
      template:
        spec:
          containers:
          - name: python-helloworld
            image: python-helloworld
            imagePullPolicy: IfNotPresent
            command: [/app/helloworld.py]
          restartPolicy: OnFailure

以下は、このKubernetesのジョブを実行するためのコマンドです。 kubectl create -f pythoncronjob.yml

しかし、以下のようなエラーが表示され、ジョブが正常に実行されていません。

standard_init_linux.go:211: exec user process caused "exec format error"

どうすればいいですか?

コマンドを追加しているのがわかります。 command: [/app/helloworld.py] をyamlファイルに追加してください。

ということで、(Dockerfileに)必要です。

RUN chmod +x /app/helloworld.py

を設定します。 py ファイルを作成します。

#!/usr/bin/env python # whatever your defualt python to run the script

で行ったのと同じように、コマンドをセットアップします。 Dockerfile