Dockerize your python application:
Docker is a technology which lets you build, deploy and run your applications. Docker enables you separate your infrastructure from your application. With Docker all you need to do is just write your code,.
dockerize it and distribute it in form of image. That way any one can use your application who is running the Docker.
What do you mean by Dockerize application?
Dockerize mean you write your code on your system then you prepare the image and distribute it over the internet or on DockerHub. You don't have to worry about the underlying infrastructure and dependencies.
Let's write a python program which will count the occurrence of words from a given string.
#Input : string = "Docker is a technology which
# lets you build, deploy and run your applications.";
#Count occurence of words from a given string example
def findFreq(s):
dictt = {}
strng = s.split(" ")
strr1 = set(strng)
for word in strr1:
dictt[word] = s.count(word)
return dictt
if __name__ == "__main__":
x = input("Enter your string:")
#raw_input in python 2.x and input() in python 3.x
print(findFreq(x))
#Output: {'a': 4, 'and': 1, 'run': 1, '': 80,
# 'deploy': 1, 'technology': 1, 'is': 1,
# 'you': 2, 'lets': 1, 'applications.': 1,
# 'which': 1, 'build,': 1, 'Docker': 1, 'your': 1}
Save this file with findfrequency.py in same directory. I am saving it in current directory for my convenience but you can save it anywhere and pass the absolute path.
Now lets create a Dockerfile.
We need to use python in docker so we are using FROM keyword so this will create layer from python image. Means your image is based on python image.
Now we need to run our python file so we need to add this file to Dockerfile.
Use CMD to execute commands when image loads
CMD ["python", "./findfrequency.py"]
Combine all above lines and create a Dockerfile.
FROM python:3
ADD findfrequency.py /
CMD ["python", "./findfrequency.py"]
So we have created a Dockerfile now. I saved it with the name "Dockerfile" in current directory. When you run docker build . command then docker looks for Dockerfile if ithis file doesn't exist or file name is wrong or extension is wrong you'll get file not exists error.
Now we are ready to build image from the dockerfile.
Open the terminal and run the below command and make sure you are in the same directory where you saved your Dockerfile as well as python file.
-t : This is tagging a name to your image. In this case I gave my image a name "myapp"
.(dot) : Is current directory
Ok so you have successfully build your image. Now Let's check what's inside the image by inspecting it.
docker inspect myapp
[
{
"Id": "sha256:c4595feabbd0b9aba4ae67037ea3c43a8c0aaf2abe6f6fd28d25b22a7cf9",
"RepoTags": [
"myapp:latest"
],
"RepoDigests": [],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2021-10-01T08:42:53.450488763Z",
"Container": "",
"ContainerConfig": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": null,
"Cmd": null,
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"LANG=C.UTF-8",
"PYTHON_VERSION=3.9.7",
"PYTHON_PIP_VERSION=21.2.4",
"PYTHON_SETUPTOOLS_VERSION=57.5.0",
"PYTHON_GET_PIP_SHA256=fa6f3fb93cce234cd4e8dd2be9c247653b52855a48dd44e6b21ff28b"
],
"Cmd": [
"python",
"./findfrequency.py"
],
You'll see output something like above. Our python function is there inside the output under CMD tag.
Let's run the image.
docker run -it myapp
Enter your string: This is my test to test dockerfile.
{'': 37, 'is': 2, 'dockerfile.': 1, 'to': 1, 'my': 1, 'test': 2, 'This': 1}
See the output above and pass the desired string to count the words.
So we have successfully dockerized our application. You can send this image to others so that they can use your program and they don't have to worry about installing any dependencies which can cause your program to crash.
No comments:
Post a Comment