Use Docker para construir un entorno python

Use Docker para construir un entorno python

1. Ideas de implementación

El sistema de gestión de la universidad se utiliza principalmente para aprender y realizar proyectos de prueba de interfaz.

Este proyecto proviene de "Cuenta oficial: Test Qi Tan", puede ir a la cuenta oficial para responder [Proyecto de prueba de interfaz]

Observaciones: el autor de la cuenta oficial utiliza principalmente este sistema de gestión universitaria para pruebas de interfaz

imagen-20230322230331515

2. Preparación ambiental

  1. Un servidor Linux (el mío es CentOS7)

  2. Preparación del proyecto: sistema de gestión universitaria

    imagen-20230322231514922

3. Ideas de implementación

  1. Instalar docker en servidor linux
  2. pyhonCree imágenes basadas en las dependencias del proyecto
  3. Ejecute el nuevo pythoncontenedor, ejecute el proyecto

4. Construya el servicio de python

1. Use Dockerfile para construir una imagen de python

1.1 Extraer imagen de python

Nota: el proyecto de gestión universitaria solo puede usar python3.7

docker pull python:3.7.16-alpine3.17

imagen-20230323200059786

1.2 Redacción Dockerfilede documentación

  1. Exporte el paquete de dependencia del proyecto al archivo requirements.txt, el nombre del archivo txt se puede escribir libremente

    pip freeze > requirements.txt
    

    Dado que los requisitos.txt ya existen en nuestro proyecto, no se realizará ninguna operación aquí.

  2. Cree un nuevo directorio en la máquina host (la máquina donde está instalado Docker) (mi directorio está en /app) y copie el archivo requirements.txt en él

    mkdir -p app 
    cp student_env/requirements.txt app/
    

    imagen-20230322231952799

  3. Cree un archivo Dockerfile en el directorio de la aplicación (el nombre del archivo debe ser Dockerfile, sin sufijo)

    FROM python:python:3.7.16-alpine3.17
    WORKDIR /app
    ADD requirements.txt /app 
    RUN pip install -r requirements.txt
    CMD["python","run_server.py"]
    
    • El contenido del archivo requirements.txt es el siguiente

    imagen-20230322232208756

  4. El contenido y la explicación de Dockerfile son los siguientes

    FROM python:3.7.16-slim # 基于python:3.7.16-slim这个基础镜像构建镜像
    WORKDIR /app #切换换工作空间
    ADD equirements.txt /app # 将python项目依赖包添加到镜像
    RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple# 安装依赖包
    CMD ["python","run_server.py"]# 设置容器执行后自动执行的命令,这里的“run_server.py”是项目的执行入口
    
  5. Ejecute el comando de creación de imágenes en el directorio de la aplicación

    docker build -t python3.7:student_env .
    
    • -t: nombre de la imagen
    • El punto (.) indica el directorio donde se encuentra el archivo Dockerfile

    imagen-20230323201045951

  6. Después de que la compilación sea exitosa, verá una nueva imagen (imágenes acoplables)

imagen-20230323201122468

  1. Cree un contenedor de python y verifique si los paquetes dependientes se instalaron correctamente

    test_envcontenedor de construcción

    docker run -id --name=test_env python3.7:student_env /bin/sh
    

    imagen-20230323201215272

    Ingrese test_enval contenedor y vea el paquete de instalación

    docker exec -it -u 0 test_env  /bin/sh
    

    imagen-20230323201327655

    Si hay paquetes dependientes que no están instalados, pueden student_envinstalarse en el contenedor por sí mismos

    pip install 依赖包==版本 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
    

2. Asigne el código del proyecto en el contenedor de python

  1. Asigne la ubicación del código del proyecto al contenedor

    Explicación: Aquí creé otro envcontenedor

    docker run -id -v /root/student_env:/app -p 8099:8099 -u=root --name=env python3.7:student_env
    
    参数说明:
    -i:表示运行容器
    -t:表示容器启动后会进入其命令行
    -d:守护式方式创建容器在后台运行
    --name:容器名称
    -p 8099:8099:端口映射,宿主机端口:python服务端口(8099)
    -u=root:指定容器用户为root用户
    -v /root/student_env:/app:将项目代码映射到python容器中
    

    imagen-20230323202330193

    1. Verifique que el proyecto python pueda ejecutarse

      python run_server.py
      

      Si se informa el siguiente error al ejecutar (causado por la compatibilidad de la versión de Django)

      
      Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x0000024D934BDD08>
      Traceback (most recent call last):
      ……
      File "C:\Python37\lib\site-packages\django\contrib\admin\widgets.py", line 152
          '%s=%s' % (k, v) for k, v in params.items(),
          ^
      SyntaxError: Generator expression must be parenthesized
      

      Debe saltar a la ruta de informe de errores, eliminar la coma y luego volver a ingresar python run_server.pyel comando para iniciar el proyecto.

      imagen-20230323202805686

      Es más simple, no te molestes, úsalo directamente vimpara modificar, de hecho, es mejor usar mapeo (pero esto no es muy bueno)

      VIMNo sé por qué no puedo instalarlo en el contenedor.

      imagen-20230323210334388

      docker cp Use copiar para modificar primero

      #将容器中的文件拷贝出来
      docker cp 0e49a9fb637d:/usr/local/lib/python3.7/site-packages/django/contrib/admin/widgets.py .
      
      #将容器中的文件拷贝回去
      docker cp widgets.py 0e49a9fb637d:/usr/local/lib/python3.7/site-packages/django/contrib/admin/widgets.py 
      
      
    2. verificar

      Indicará que el puerto 8099 estará ocupado, porque ya ejecuté el contenedor dokcer cuando lo inicié.run_server.py

      imagen-20230323210627726

      ip:8099/api/departments/Ingresamos en el navegador:

      Si aparece la siguiente imagen, se permite que sea correcta

      imagen-20230323210932586

Supongo que te gusta

Origin blog.csdn.net/AAIT11/article/details/130075077
Recomendado
Clasificación