Dockerfile的使用和实践(10)

本文详细介绍如何使用Docker将Python Flask应用打包成镜像并运行。从编写Dockerfile开始,解决COPY命令中文件与目录混淆的问题,到最后成功运行容器,全程实战演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验概述

将一个Python程序打包成一个docker  image,然后运行成一个Container容器

二、实验步骤

1、app.py的内容

from flask import Flask
from redis import Redis
import os
import socket

app = Flask(__name__)
redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)


@app.route('/')
def hello():
    redis.incr('hits')
    return 'Hello Container World! I have been seen %s times and my hostname is %s.\n' % (redis.get('hits'),socket.gethostname())


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000, debug=True)

2、上传app.py文件到宿主机指定目录

3、创建Dockerfile文件

首先,建立运行环境

然后,原码复制到image里面

然后,做些相关配置

最后,执行CMD相关命令

FROM python:2.7
LABEL "maintainer=xxxxx"
RUN pip install flask
COPY app.py /app
WORKDIR /app
EXPOSE 5000
CMD ["python","app.py"]

4、build

docker build -t zheng007/python-helloworld .

会报如下错误:

Step 4/7 : COPY app.py /app
 ---> a302573ed2e5
Step 5/7 : WORKDIR /app
Cannot mkdir: /app is not a directory

5、排错

docker run -it a302573ed2e5 /bin/bash

会发现/app是一个文件不是目录,而 a302573ed2e5是build过程中生成的一个中间形态的容器

因此,需修改Dockerfile文件

FROM python:2.7
LABEL "maintainer=xxxxx"
RUN pip install flask
COPY app.py /app/   #加一个/
WORKDIR /app
EXPOSE 5000
CMD ["python","app.py"]

6、执行容器

docker run -d zheng007/python-helloworld  #-d后台运行容器

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值