内网环境下通过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

在这里插入图片描述

  1. 创建容器,并在容器内安装python库
    3.1. 创建容器,主要为了在镜像中安装python项目所需的python库
# 创建容器(若未指定容器名时容器名随机生成)
docker run -itd python:3.9-alpine
# 查看容器是否创建成功
docker ps 

在这里插入图片描述

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

docker cp requirements.txt interesting_easley:/

在这里插入图片描述
  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

在这里插入图片描述
  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

在这里插入图片描述

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

在这里插入图片描述

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

  1. 内网服务项目结构
    在这里插入图片描述
  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

在这里插入图片描述

  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

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值