How to create your own image using Dockerfile

How to create your own image using Dockerfile

1. Create an empty directory

$ cd /home/xm6f/dev 
$ mkdir myapp
$ cd myapp/

2.vim Dockerfile, the content is as follows:

## A basic python runtime environment FROM python
## Set the working directory WORKDIR /app
## Copy the current system folder contents to the container's app directory ADD ./app
## Install necessary dependency packages RUN pip install -r softwares.txt
## Open port for access outside the container EXPOSE 80
EXPOSE 3088
EXPOSE 8080
EXPOSE 8066
## Define environment variable ENV NAME HELLO
## Run command CMD ["python","app.py"]

3. Install dependencies

vim softwares.txt, the content is as follows:

Flask
Redis

4.vim app.py, the content is as follows:

from flask import Flask
from redis import Redis, RedisError
import os
import socket
# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = Flask(__name__)
@app.route("/")
def hello():
 try:
  visits = redis.incr("counter")
 except RedisError:
  visits = "<i>cannot connect to Redis, counter disabled</i>" 
 html = "<h3>Hello {name}!</h3>" \
   "<b>Hostname:</b> {hostname}<br/>" \
   "<b>Visits:</b> {visits}"
 return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)
if __name__ == "__main__":
 app.run(host='0.0.0.0', port=80)

5. Compile

$ docker build -t myfirstapp .

6. Check that a new image has been generated

$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myfirstapp latest 01ea1129a831 2 hours ago 699MB

7. Start the image

$ docker run -p 4000:80 myfirstapp

It can also be run in the background:

$ docker run -d -p 4000:80 myfirstapp

8. Access to the Services

# curl http://localhost:4000
<h3>Hello world!</h3><b>Hostname:</b> a6655d0d7e74<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>

Or use a browser to access the service: http://192.168.1.160:4000

9. View the currently running image

$ docker ps
CONTAINER ID MAGE COMMAND CREATED STATUS PORTS NAMES
2db45cab2bb4 myfirstapp "python app.py" 2 minutes ago Up 2 minutes 0.0.0.0:4000->80/tcp elastic_wilson

10. Stop mirroring

$ docker stop 2db45cab2bb4

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • Detailed explanation of CMD and ENTRYPOINT commands in Dockerfile
  • How to write the best Dockerfile
  • Detailed explanation of COPY and ADD commands in Dockerfile
  • A detailed introduction to the Dockerfile image building file and related commands in Docker
  • Detailed explanation of using Dockerfile to build MySQL image and implement data initialization and permission setting
  • Detailed explanation of the specific use of the ENV instruction in Dockerfile
  • Dockerfile usage examples
  • Dockerfile to create the official Tomcat image and detailed explanation of image usage
  • Summary of common commands in Dockerfile
  • How to deploy SpringBoot project using Dockerfile
  • How to use Dockerfile to create a mirror of the Java runtime environment
  • Introduction to Dockerfile instructions ADD and COPY
  • Detailed explanation of multi-stage (multi-stage build) in Dockerfile
  • Docker Basics: Detailed Explanation of Dockerfile Commands
  • How to deploy nodejs service using Dockerfile
  • Dockerfile instructions explained
  • A brief introduction to the Dockerfile instruction VOLUME
  • Dockerfile simple introduction

<<:  MySQL recursion problem

>>:  js uses cookies to remember user page operations

Recommend

How to isolate users in docker containers

In the previous article "Understanding UID a...

Detailed tutorial on installing CUDA9.0 on Ubuntu16.04

Preface: This article is based on the experience ...

Detailed steps to install JDK and Tomcat in Linux environment

Table of contents 1. Install JDK Manual Installat...

JavaScript parseInt() and Number() difference case study

Learning objectives: The two functions parseInt()...

Analysis of the Nesting Rules of XHTML Tags

In the XHTML language, we all know that the ul ta...

What are Web Slices?

IE8 new feature Web Slices (Web Slices) Microsoft...

React Principles Explained

Table of contents 1. setState() Description 1.1 U...

Detailed process of zabbix monitoring process and port through agent

Environment Introduction Operating system: centos...

Two solutions for automatically adding 0 to js regular format date and time

Table of contents background Solution 1 Ideas: Co...

How to use CocosCreator for sound processing in game development

Table of contents 1. Basics of audio playback in ...

Vue close browser logout implementation example

Table of contents 1. beforeunload event 2. Unload...

Native JavaScript implementation of progress bar

The specific code for JavaScript to implement the...