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文件

dockerfile安装openssl3 dockerfile安装python_docker

 

 

 

 

3、运行并创建镜像,运行命令:docker会根据dockerfile文件的配置生成镜像

(注意最后有个"." 点)

docker build -t python-app .

 

创建docker镜像成功如下:镜像名 python-app

dockerfile安装openssl3 dockerfile安装python_python_02

 

 

然后运行python-app镜像命令:

docker run python-app

 

运行python程序成功,打印如下:

dockerfile安装openssl3 dockerfile安装python_python_03

 

 

 

 

 

二、docker进入python容器,引入安装第三方库

 

  2.1,运行命令进入docker中的python环境容器: 【这种方式可能会没卵用,直接看2.2】

(python-app是镜像名称,如果没有,就用镜像id)

docker run -it python-app /bin/bash

成功后会进入这个界面:然后就可以使用pip xxx安装第三方包了

dockerfile安装openssl3 dockerfile安装python_docker_04

 

 

 安装成功后,输入exit 回车退出容器内部:

dockerfile安装openssl3 dockerfile安装python_python_05

 

 

 

   2.2,如果上面方式没卵用,直接把安装第三方包的命令写在dockerfile文件中,如:

dockerfile安装openssl3 dockerfile安装python_python_06

 

 

 

 

 三、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容器中

dockerfile安装openssl3 dockerfile安装python_docker_07

 

 

 

  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说明成功了

dockerfile安装openssl3 dockerfile安装python_日志文件_08

 

 

  然后再看/home/python/logs目录,是否挂载出了容器里的日志文件:

dockerfile安装openssl3 dockerfile安装python_docker_09

 

 

 查看最新100行日志文件命令:

tail -f -n 100 test.log