Docker构建python环境 --潘登同学的Linux笔记

文章目录

    • Docker构建python环境 --潘登同学的Linux笔记
  • Docker网络管理
  • 创建Python容器
  • 创建数据库容器
    • 部署flask项目
    • 采用py文件部署

Docker网络管理

网络管理的作用,因为每次重启一个服务的ip地址是动态的,如mysql服务,如果重启,有可能python的web应用就访问不到; 虽然我们可以把mysql的接口映射到外网的ip地址上,但是假如我们有很多应用都想将mysql运行在3306这个端口,但是又想只用一个数据库;

那么既可以创建一个docker内部网段(172.18.0.x)

# 斜杠16表示2^16 -2 个可分配的ip地址
docker network create --subnet=172.18.0.0/16 mynet
# (如果想删除的话)删除某个网段 注意: 先删掉网段的容器
docker network rm mynet
# 0和1的ip不能用只能用172.18.0.2往后的
docker network -it mynet --ip 172.18.0.2 python:3.8 bash
# 查看分配的ip地址
docker network ls

创建Python容器

先在宿主机上创建一个目录,将这个目录挂载到python容器里面,以后直接将python项目拷贝进去,就能在python容器里面看见了

# 创建project文件夹
mkdir project
# 创建网段
docker network -it mynet --ip 172.18.0.2 python:3.8 bash
# 创建
docker run -it -d --name=flask_project -p 80:5000 -v /root/project:/root/project --net mynet --ip 172.18.0.2 python:3.8 bash

永久配置清华源

# 首先进入到容器中(指的是exec进去)pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 创建虚拟环境
pip install virtualenv
virtualenv flask_evn
# 启动虚拟环境
source flask_evn/bin/activate

创建数据库容器

docker pull mysql
# -d参数后台运行mysql 可以不先创建宿主机下的目录
docker run --name my_mysql -p 4306:3306 --net mynet --ip 127.18.0.3 -v /root/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql

部署flask项目

# 把要用的全install了
pip install xxx

将数据库连接的地址修改一下,可以不写宿主机的ip地址,直接写刚才的设定的内网ip 127.18.0.3 3306即可

将代码改一下,将debug模式关掉,将app.run()中加入0.0.0.0的参数, 启动一下项目,不需要进浏览器

然后将目录下的所有的__pycache__字节码文件中的.pyc文件留下,可以改个名字 app.pyc,名字只保留 前面的部分 + 后缀,替换掉__pycache__所在的位置,总之最后就是你的项目的python代码被pyc给替代掉了

然后用cmd将这个项目打包,然后放到Linux上

# 前者是压缩包的名字
tar -cvf C:\Users\潘登\Documents\GitHub\project1.tar C:\Users\潘登\Documents\GitHub\project1

用Xftp7 连接Linux,上传文件到project下

# 进入project目录
cd proeject
# 解压到project下
tar -xvf project1.tar -C /root/project
# 进入python容器
docker exec -it flask_project bash
# 选择虚拟环境
source flask_evn/bin/activate
# 进入目录下 (这个目录好像是与原本Windows的地址有关)
cd /root/project/Users/潘登/Documents/GitHub/project1
# 看看字节码文件
ls

# 启动项目(有点bug把itsdangerous降到2.0.1)
python app.pyc
# 但是我们想在后台跑服务
nohup python app.pyc > logs.txt

能运行但是访问不到,后续解决…

采用py文件部署

上面不要只把字节码留下,把python源文件留下, 把项目中没用的东西,如.git, flask_env等文件删掉,把源码按照上面方式打包,传到Linux中,按照相同方式

# 最后启动命令为
nohup python app.py > logs.txt

成功运行!!!

Docker构建python环境相关推荐

  1. Dockerfile 构建python环境

    Dockerfile 构建python环境 构建步骤 编写一个dockerfile文件 通过docker build构建文件的一个镜像 docker run 运行镜像 具体步骤 首先,创建目录 pyt ...

  2. 【如何简单优雅的来用Docker布置Python环境跑脚本【Linux / 宝塔】】

    如何简单优雅的来用Docker布置Python环境跑脚本[Linux / 宝塔] 如何简单优雅的来用Docker布置Python环境跑脚本[Linux / 宝塔] 建议用宝塔,来安装Docker,贼方 ...

  3. 用Docker搭建Python环境

    一.参考资料 快速入门Docker-用Docker搭建Python的开发环境 二.关键步骤 2.1 创建项目目录 $ cd /PATH/TO $ mkdir python-demo 2.2 下载pyt ...

  4. 利用Docker构建开发环境

    最近接触PAAS相关的知识,在研发过程中开始使用Docker搭建了自己完整的开发环境,感觉生活在PAAS时代的程序员真是幸福,本文会简要介绍下Docker是什么,如何利用Docker来搭建自己的开发环 ...

  5. docker配置python环境_PyCharm使用Docker镜像搭建Python开发环境

    在我们平时使用PyCharm的过程中,一般都是连接本地的Python环境进行开发,但是如果是离线的环境呢?这样就不好搭建Python开发环境,因为第三方模块的依赖复杂,不好通过离线安装包的方式安装.本 ...

  6. 用Docker构建LNMP环境(上)

    利用docker搭建lnmp环境(上) 小知识: docker镜像运行之后变成容器(docker run) Registry 是Docker镜像的中央存储仓库(pull/push) https://g ...

  7. 使用python构建向量空间_使用Docker构建Python数据科学容器

    人工智能(AI)和机器学习(ML)最近真的火了,并驱动了从自动驾驶汽车到药物发现等等应用领域的快速发展.AI和ML的前途一片光明. 另一方面,Docker通过引入临时轻量级容器彻底改变了计算世界.通过 ...

  8. 生死簿后台管理系统(一)——使用Docker构建开发环境

    最近有个段子非常火,说有个程序员梦见自己被阎王召见,让他帮忙开发一个后台管理系统.在一笑而过之后,我觉得如果要是能把这个系统做出来,应该颇具娱乐性,也顺便了解一下高并发以及大数据的相关技术--每天要上 ...

  9. python和docker交互_jupyter notebook 连接服务器docker中python环境

    目标 ​主机的浏览器使用服务器端宿主机中的docker容器中的jupyter notebook, 从而能够使用docker容器中的开发环境(这里主要是python的开发环境) 整体思路 docker容 ...

最新文章

  1. MHA二种高可用架构切换演练
  2. C++ 20的悲叹,未出世就被群嘲“劝退”
  3. mysql内部安装workb_centOS系统中下安装mysql workbench图文详细步骤
  4. 简单几步教你去除开机出现扫描硬盘!
  5. 2015计算机应用基础平时作业答案,2015秋《计算机应用基础》第一次作业
  6. Python装饰器(一)
  7. creo管道设计教程_Creo产品设计教程:握力器弹簧建模,一个技巧轻松搞定
  8. boost asio io_service与 strand 分析
  9. 网易云免费OSS服务用做Markdown图床或博客图片外链
  10. Leetcode每日一题:141.linked-list-cycle(环形链表)
  11. python周期执行-用Python执行周期性动作
  12. 文件没有后缀名,如何批量添加为.jpg
  13. bzoj 3211: 花神游历各国 bzoj 3038: 上帝造题的七分钟2
  14. 如何利用PHOTOSHOP将图片旋转45度
  15. mybatis如何防止SQL注入?
  16. Deepin 20.1 安装nvidia显卡驱动 爬坑
  17. 矩阵的乘法与利用矩阵求解线性方程组
  18. 收集的关于DLL较全的介绍
  19. java实现添加微信好友_使用java生成微信随机加好友的链接
  20. 安卓串口——谷歌android_serialport_api studio使用以及相关问题

热门文章

  1. Uni-app 小程序 APP 的广告变现之路:沉浸式视频流广告
  2. 这台计算机现在在博物馆吗英语翻译,2018年12月英语六级翻译真题点评试卷二:博物馆(文都教育)...
  3. 2-4-4 简单实现x的n次方 (10分)
  4. 台式电脑gtx1050ti驱动问题
  5. python统计闰年的个数_闰年python_闰年 python_python 闰年数 - 云+社区 - 腾讯云
  6. Linux环境下查看服务器硬件信息
  7. 与sscanf函数的一见钟情(真是相见恨晚!)
  8. excel+notepad++ 对比数据
  9. C语言学习实例2-提成计算
  10. 智能中控屏:产品介绍+未来发展趋势详解