1、使用docker安装python环境,并运行python程序文件
首先,创建目录:/home/python/python-docker-app
并进入python-docker-app目录下,创建dockerfile文件
命令:vim dockerfile
dockerfile文件内容如下:
FROM python
COPY . /src
CMD ["python", "/src/index.py"]
2、在python-docker-app目录下,再创建一个index.py文件来用测试,内容如下:
print("Hello world!测试");
如下:dockerfile文件与index.py文件
3、运行并创建镜像,运行命令:docker会根据dockerfile文件的配置生成镜像
(注意最后有个"." 点)
docker build -t python-app .
创建docker镜像成功如下:镜像名 python-app
然后运行python-app镜像命令:
docker run python-app
运行python程序成功,打印如下:
二、docker进入python容器,引入安装第三方库
2.1,运行命令进入docker中的python环境容器: 【这种方式可能会没卵用,直接看2.2】
(python-app是镜像名称,如果没有,就用镜像id)
docker run -it python-app /bin/bash
成功后会进入这个界面:然后就可以使用pip xxx安装第三方包了
安装成功后,输入exit 回车退出容器内部:
2.2,如果上面方式没卵用,直接把安装第三方包的命令写在dockerfile文件中,如:
三、2.0版本,python程序输出日志文件,并且运行镜像时挂载宿主机目录
3.1长话短说,两个py文件:test001.py 和 logger.py
test001.py是测试主文件
logger.py是封装用来输出日志的工具代码,test001.py程序中引入了logger.py,主要用来打印日志,并把日志输出到日志文件
3.2、logger.py代码内容如下:
import sys
import logging
from logging import handlers
# 日志级别关系映射
level_relations = {
'debug': logging.DEBUG,
'info': logging.INFO,
'warning': logging.WARNING,
'error': logging.ERROR,
'crit': logging.CRITICAL
}
def _get_logger(filename, level='info'):
# 创建日志对象
log = logging.getLogger(filename)
# 设置日志级别
log.setLevel(level_relations.get(level))
# 日志输出格式
fmt = logging.Formatter('%(asctime)s %(thread)d %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
# 输出到控制台
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(fmt)
# 输出到文件
# 日志文件按天进行保存,每天一个日志文件
file_handler = handlers.TimedRotatingFileHandler(filename=filename, when='D', backupCount=1, encoding='utf-8')
# 按照大小自动分割日志文件,一旦达到指定的大小重新生成文件
# file_handler = handlers.RotatingFileHandler(filename=filename, maxBytes=1*1024*1024*1024, backupCount=1, encoding='utf-8')
file_handler.setFormatter(fmt)
log.addHandler(console_handler)
log.addHandler(file_handler)
return log
# 明确指定日志输出的文件路径和日志级别
logger = _get_logger('./home/python/logs/test.log', 'info') # linux服务器存放test.log日志文件生成地址
# logger = _get_logger('D:/logs/test.log', 'info') # windows本地测试时test.log的生成地址
test001.py引入logger.py的代码:
# 导入logger.py
from logger import logger
# ====================================日志处理===============================================================
logger.info('日志输出测试')
# ======================================日志处理结束=====================================================================
3.3,把这两个文件放在/home/python/python-docker-app目录下,以便测试
3.4,创建/home/python/logs 目录,以便等一下挂载到docker的python容器中
3.5、在logger.py中的代码:在docker生成容器运行的时候,"./home/python/logs/test.log" 只会在容器里面生成,并且报错找不到目录,因为docker生成的python容器里没有/home/python/logs这个目录。所以才要进行挂载到宿主机
logger = _get_logger('./home/python/logs/test.log', 'info')
3.6、准备好dockerfile构建docker镜像的配置文件,执行生成镜像命令:
docker build -t python-app .
3.7、运行镜像生成容器并挂载/home/python/logs目录命令:
docker run -itd --name python-app -v /home/python/logs:/home/python/logs python-app
查看正在运行的容器:没报错,有容器id说明成功了
然后再看/home/python/logs目录,是否挂载出了容器里的日志文件:
查看最新100行日志文件命令:
tail -f -n 100 test.log
。