当前位置: 首页 > news >正文

python(9) : docker方式运行python程序(自启动,守护)

1.安装docker

docker(6) : 离线安装docker_docker-19.03.9.tgz-CSDN博客

2.拉取python镜像

 拉取python镜像

docker pull python

镜像加速(按需) : linux配置docker源,国内加速镜像(注册阿里云镜像)_docker加速 清华源-CSDN博客

3.启动python镜像 

 创建一些脚本

cat > Dockerfile <<'EOF'
FROM python
WORKDIR /home
COPY file ./
CMD ["sh","/home/startup.sh"]
EOFcat > build.sh <<'EOF'
docker rm -f python_env:1.0
docker rmi python_env:0.1
docker build -t python_env:1.0 .
EOFcat > exec.sh <<'EOF'
docker exec -it python_env bash
EOFcat > run.sh <<'EOF'
docker rm -f python_env 
path="$( cd "$( dirname "$0"  )" && pwd  )"
cd $path
docker run -d --name=python_env -v $path/share:/home/share  python_env:0.1
docker logs -f python_env 
EOFmkdir share
mkdir file
cat > file/startup.sh <<'EOF'
#!/bin/sh
while true
dodate sleep 5s
done
EOFchmod +x *.sh

构建

./build.sh

启动容器

./run.sh

进入容器

./exec.sh

4.pip安装依赖

python镜像内包含pip和python, 直接使用pip安装依赖即可, 可使用加速仓库

pip install flask -i https://mirrors.aliyun.com/pypi/simple/ requests

5.打包容器为镜像

docker commit python_env python_env_release:1.0

 6.以制作的python镜像运行py程序

选择一个目录为工作目录, 如/home/py_test, 进入该目录, 粘贴复制如下代码生成一些文件

cat > run.sh <<'EOF'
path="$( cd "$( dirname "$0"  )" && pwd  )"
cd $path
python_env_release_version=`cat python_env_release_version`
docker run -d --name=py_test  \--restart=always \-v $path/code:/home/code \-v $path/startup.sh:/home/startup.sh \-p 8000:8000 python_env_release:$python_env_release_version
docker logs -f py_test
EOFcat > lg.sh <<'EOF'
docker logs -f --tail 200 py_test
EOFcat > python_env_release_version <<'EOF'
1.0
EOFmkdir code cat > startup.sh <<'EOF'
cd /home/code
python my_api.py
EOFchmod +x run.sh

 运行

./run.sh

my_api.py是一个python flask http接口程序,这样它挂了docker会自动拉起来

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Flutter中组件动态可见的实现
  • 智慧校园”的系统设计数据库
  • 28. 双耳配对 - 配置
  • linux系统中USB模块鼠标驱动实现
  • 计算机毕业设计 基于SpringBoot框架的网上蛋糕销售系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • HashSet中hashCode 与 equals 的关系?
  • <Rust>egui学习之小部件(三):如何为窗口UI元件设置布局(间隔、水平、垂直排列)?
  • python基础学习(最终篇)
  • 内存管理篇-17解开页表的神秘面纱-上
  • 定时器方案:时间表盘
  • Python实现蜂窝六边形的实现方法
  • 素材无水印素材网站在哪下载?高清的无水印素材资源库分享
  • AcWing 902. 最短编辑距离
  • VS Code 安装文档
  • MediaGo下载器:专业级功能,轻松应对各种下载需求!
  • JavaScript-如何实现克隆(clone)函数
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • CSS 专业技巧
  • express.js的介绍及使用
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Just for fun——迅速写完快速排序
  • LintCode 31. partitionArray 数组划分
  • Markdown 语法简单说明
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Quartz初级教程
  • React-flux杂记
  • storm drpc实例
  • Vue UI框架库开发介绍
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 闭包--闭包作用之保存(一)
  • 第2章 网络文档
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 浅谈web中前端模板引擎的使用
  • 为视图添加丝滑的水波纹
  • 写给高年级小学生看的《Bash 指南》
  • 延迟脚本的方式
  • 用jQuery怎么做到前后端分离
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • 选择阿里云数据库HBase版十大理由
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • $().each和$.each的区别
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (13)Hive调优——动态分区导致的小文件问题
  • (二)换源+apt-get基础配置+搜狗拼音
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (利用IDEA+Maven)定制属于自己的jar包
  • (学习总结16)C++模版2
  • (一)WLAN定义和基本架构转
  • (转)jdk与jre的区别
  • (转)可以带来幸福的一本书
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET Core Web APi类库如何内嵌运行?