Estoy construyendo el Dockerfile para el script python que se ejecutará en el sistema minikube windows 10 a continuación es mi Dockerfile
Construyendo la ventana acoplable usando el siguiente comando docker build -t python-helloworld .
Y cargar eso en minikube docker daemon {{X 0}}
Archivo 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"]
Archivo python cron job.yaml (archivo de trabajo 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
A continuación se muestra el comando para ejecutar este trabajo de Kubernetes kubectl create -f pythoncronjob.yml
Pero obtener el siguiente trabajo de error no se ejecuta de manera engañosa, pero cuando ejecutó el Dockerfile solo, funciona bien
Standard_init_linux.go: 211: el proceso de usuario exec provocó un "error de formato exec"
3 respuestas
Puedo ver que agregas el comando command: [/app/helloworld.py]
al archivo yaml.
Entonces necesita (en Dockerfile):
RUN chmod +x /app/helloworld.py
Configura shebang en tu archivo py
:
#!/usr/bin/env python # whatever your defualt python to run the script
O configure el comando de la misma manera que lo hizo en Dockerfile
Recientemente encontré el problema al ejecutar un contenedor logstash
standard_init_linux.go: 211: el proceso de usuario exec provocó un "error de formato exec"
Noté que la línea shebang (#! / Bin / sh) en entrypoint.sh se escribió en la segunda línea en lugar de la primera línea del archivo entrypoint.sh.
Cuando se establece la línea shebang en cuanto a la primera línea del script, el error desapareció y "docker run -it logstashimage: latest sh" funcionó perfectamente.
Otras dos razones podrían plantear este problema si ejecuta Docker en Windows :
- los finales de línea de scripts no son LF (linux)
- la codificación de los scripts debe ser utf-8 + BOM