1. 准备flask文件

  1. from flask import Flask
  2. app = Flask(__name__)
  3. @app.route('/')
  4. def hello_world():
  5. return 'Hello World!'

2. 准备Dockerfile

  1. FROM python:3.9.5-slim
  2. COPY app.py /zhangtao/app.py
  3. RUN pip3 install flask
  4. WORKDIR /zhangtao
  5. ENV FLASK_APP=app.py
  6. CMD ["flask","run"]

3. 构建镜像

  1. [root@localhost zhangtao]# docker image build -f Dockerfile -t flask-demo .
  2. Sending build context to Docker daemon 3.698MB
  3. Step 1/6 : FROM python:3.9.5-slim
  4. 3.9.5-slim: Pulling from library/python
  5. b4d181a07f80: Downloading [========================> ] 13.04MB/27.15MB
  6. a1111a8f2ec3: Download complete
  7. 445d04774519: Download complete
  8. 24f3f85d41f3: Download complete
  9. d299f7fb612d: Download complete

4. 运行容器

  1. [root@localhost zhangtao]# docker container run -d flask-demo
  2. 30324fee8eaaf5e9e4dc3d0f9d9cab33240ad0198e9c9c27e6c235e619202213
  3. [root@localhost zhangtao]#
  4. [root@localhost zhangtao]# docker container ls
  5. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  6. 30324fee8eaa flask-demo "flask run" 7 seconds ago Up 6 seconds determined_galois
  7. f82028e4f127 nginx "/docker-entrypoint.…" 2 weeks ago Up 2 weeks 0.0.0.0:80->80/tcp, :::80->80/tcp condescending_brattain

5. 进行端口转发

  • 修改Dockerfile
  1. FROM python:3.9.5-slim
  2. COPY app.py /zhangtao/app.py
  3. RUN pip3 install flask
  4. WORKDIR /zhangtao
  5. ENV FLASK_APP=app.py
  6. EXPOSE 5000
  7. CMD ["flask", "run", "-h", "0.0.0.0"]
  • 重新构建镜像
    docker build -t flask-demo .
  • 重新运行容器
  1. [root@localhost zhangtao]# docker container run -d -p 5000:5000 flask-demo
  2. 3533523e34335212bad30537494dba3bb4caa2563222f49081d73988a5d19660
  3. [root@localhost zhangtao]#
  4. [root@localhost zhangtao]# docker container ls
  5. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  6. 3533523e3433 flask-demo "flask run -h 0.0.0.0" 6 seconds ago Up 5 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp quizzical_herschel
  7. f82028e4f127 nginx "/docker-entrypoint.…" 2 weeks ago Up 2 weeks 0.0.0.0:80->80/tcp, :::80->80/tcp condescending_brattain

6. 访问5000端口

七、Dockerfile-练习:构建Flask镜像 - 图1