Search code examples
pythondockerdockerfiledocker-swarm

How to run my python script on docker?


enter image description hereenter image description hereI am trying to run my python script on docker. I tried different ways to do it but not able to run it on docker. My python script is given below:

import os

print ('hello') 

I have already installed docker on my mac. But i want to know how i can make images and then push it to docker after that i wanna pull and run my script on docker itself.


Solution

  • Alright, first create a specific project directory for your docker image. For example:

    mkdir /home/pi/Desktop/teasr/capturing
    

    Copy your dockerfile and script in there and change the current context to this directory.

    cp /home/pi/Desktop/teasr/capturing.py /home/pi/Desktop/teasr/dockerfile /home/pi/Desktop/teasr/capturing/
    
    cd /home/pi/Desktop/teasr/capturing
    

    This is for best practice, as the first thing the docker-engine does on build, is read the whole current context.

    Next we'll take a look at your dockerfile. It should look something like this now:

    FROM python:latest
    
    WORKDIR /usr/local/bin
    
    COPY capturing.py .
    
    CMD ["capturing.py", "-OPTIONAL_FLAG"]
    

    The next thing you need to do is build it with a smart name. Using dots is generally discouraged.

    docker build -t pulkit/capturing:1.0 .
    

    Next thing is to just run the image like you've done.

    docker run -ti --name capturing pulkit/capturing:1.0
    

    The script now get executed inside the container and will probably exit upon completion.

    Edit after finding the problem that created the following error:

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

    There's a different architecture beneath raspberry pi's (ARM instead of x86_64), which COULD'VE BEEN the problem, but wasn't. If that would've been the problem, a switch of the parent image to FROM armhf/python would've been enough.

    Source

    BUT! The error kept occurring.

    So the solution to this problem is a simple missing Sha-Bang on top of the python script. The first line in the script needs to be #!/usr/bin/env python and that should solve the problem.

    Source