目录

内网环境下通过docker-compose部署python项目详解

内网环境下通过docker-compose部署python项目(详解)

一、引言

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

二、本文简介

上篇文件讲到通过docker-compose部署python项目,但在企业中基于安全情况考虑,大多数服务器是无法访问互联网的,只能内网使用,如果通过docker部署python项目,无法访问docker.io致使python环境镜像无法拉取,本文则针对这种情况,详细讲解内网服务器中通过docker-compose部属python项目(前置条件:服务器已安装完成docker)

三、内网服务器docker部署python镜像安装

  1. 在内网中是无法安装docker镜像的,此时我们需要借助可以访问互联网的机器安装docker镜像,然后通过导出+导入的方式实现内网服务docker的安装

  2. 可访问互联网的服务器安装docker镜像(以python:3.9-alpine为例)

    2.1. 拉取python镜像(如果速度慢docker可配置为国内镜像源地址,可自行百度)

docker pull python:3.9-alpine

https://i-blog.csdnimg.cn/blog_migrate/e97f91905e02df2a5930d4cc7130a222.png

  1. 创建容器,并在容器内安装python库

    3.1. 创建容器,主要为了在镜像中安装python项目所需的python库

# 创建容器(若未指定容器名时容器名随机生成)
docker run -itd python:3.9-alpine
# 查看容器是否创建成功
docker ps 

https://i-blog.csdnimg.cn/blog_migrate/c6c620934487a8a498516a6d77dd79d8.png

3.2. 将python库文件requirements.txt复制到容器interesting_easley中/目录下

docker cp requirements.txt interesting_easley:/

https://i-blog.csdnimg.cn/blog_migrate/7992997685b4557dd8d8994276d8a562.png

3.3. 进入容器interesting_easley,安装python项目所需的python库(注意:确保上步python库文件已复制到容器内)

docker exec -it interesting_easley /bin/sh
pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt

https://i-blog.csdnimg.cn/blog_migrate/e725bf159db3ef15f4daf274891f95cd.png

3.4. 退出容器

exit
  1. 导出含有容器interesting_easley的python镜像python_3.9-alpine.tar(导出镜像分为export和save,export导出为镜像内容含容器,save导出为镜像不含容器;此处需要容器内安装的python库,所以需要用到export进行导出)
docker export interesting_easley > python_3.9-alpine.tar

https://i-blog.csdnimg.cn/blog_migrate/9db523d9c7aba586a2994a707f980d29.png

  1. 将导出镜像文件python_3.9-alpine.tar上传至内网服务器,在内网服务器进行导入镜像python:3.9-alpine(镜像命可自定义)
docker import python_3.9-alpine.tar python:3.9-alpine

https://i-blog.csdnimg.cn/blog_migrate/0b1f1496ffdbe2bd22e17e0ef4964980.png

四、内网服务器python项目部署

  1. 内网服务项目结构

    https://i-blog.csdnimg.cn/blog_migrate/111a0c36867b591d3c05fc61ec8dec64.png

  2. 编写python项目docker-compose文件

    2.1. 新建docker-compose.yaml文件

touch docker-compose.yaml

2.2. 编写内容

vim docker-compose.yaml
version: '3'
services:
  files_server:
    working_dir: /root/fileServer
    image: python:3.9-alpine
    container_name: files_server
    environment:
      - TZ=Asia/Shanghai
      - LANG=C.UTF-8
    restart: always
    volumes:
      - ../FilesServer:/root/fileServer
      - /home/:/home/
    command: python /root/fileServer/application.py
    ports:
      - "5000:5000"
    network_mode: bridge
    logging:
      options:
        max-size: "12m"
        max-file: "5"
      driver: json-file

https://i-blog.csdnimg.cn/blog_migrate/9a49d58c3a31aa20787a6ae415669004.png

2.3. 编写注意

files_server:容器名称,启动需要 image:镜像名称,上面导入的镜像名称

volumes:文件挂载,服务器python项目文件与容器文件实现互通,修改服务器文件内容,可同步至容器内(这里同步的是整个项目文件夹,也可同步单个需要的文件)

command:启动命令,此处路径为容器内路径(服务器文件挂载的启动文件路径) 内容缩进:编写时注意文件内容的缩进

五、通过docker-compose启动python项目容器

  1. 启动容器(files_server:docker-compose中容器名称)
docker-compose up -d files_server
  1. 查看容器运行是否正常,可通过查看容器docker日志,查看是否报错,及通过报错信息定位问题;通过日志可以看到项目已启动成功
docker logs -f --tail 200 files_server

https://i-blog.csdnimg.cn/blog_migrate/13b74c3e2bc29e6c5fe3616733bb6888.png