heroku部署python-docker的web服务器

  • 注册heroku
  • 安装Heroku-Cli
  • 登录
    • 登录客户端
    • 登录容器
  • 安装docker
  • 启动docker
  • 常见docker命令
    • 打包
    • 运行
    • 查看容器和删除容器
    • 查看镜像和删除镜像
    • 开启和结束容器
  • 打包docker
  • 注册docker到Heroku
  • 上传docker到Heroku
  • 上传容器到Heroku
  • 启动应用
  • 查看日志
  • 常见问题
    • 动态绑定端口号
    • Dockerfile书写格式
    • Python文件书写格式

注册heroku

https://dashboard.heroku.com/

在电脑上可能有问题,无法显示验证,会注册失败

需要使用技术上网,并且在手机上操作会更流畅

登录之后创建一些的app

其实创建一个就行,那个是在Heroku中内部划分不同的步骤
命名规范要求中间有-,不是两个名字,-前后是一个整体

安装Heroku-Cli

centos-linux操作系统下
其他见官网文档

curl https://cli-assets.heroku.com/install.sh | sh

登录

登录客户端

heroku login

或者

heroku login -i

登录容器

heroku container:login

安装docker

yum -y install docker

启动docker

systemctl start docker

常见docker命令

打包

docker build -t 打包名称 -f Dockfile .

运行

docker run -p 8080:8080 -d 打包名称:latest

8080 是端口映射,如果有端口就需要写

查看容器和删除容器

查看容器
docker ps
删除容器
docker rm 刚刚dockerps出来的id号码写到这里

查看镜像和删除镜像

查看镜像
docker images
删除镜像
docker rmi 刚刚dockerimages出来的id号码写到这里

开启和结束容器

docker start dockerps出来的id号码写到这里
docker stop dockerps出来的id号码写到这里

打包docker

进入到docker文件夹下

执行命令打包

docker build -t pythondocker -f Dockfile .

注意:
Dockfile 是自己Dockerfile的名字,建议固定写成这样,Heroku可能会不识别其他符号,注意区分大小写
pythondocker 是容器的名字,自己随便起,注意和下面名称要统一

注册docker到Heroku

docker tag pythondocker:latest registry.heroku.com/***/web

pythondocker 是容器的名字,自己随便起,注意和下面名称要统一

registry.heroku.com/***/web 自己注册的应用容器服务器

*** 表示自己容器的名称


这些名称,随便写一个,注意要和下面统一

上传docker到Heroku

docker push registry.heroku.com/***/web

registry.heroku.com/***/web 这个注意要和上面的统一

上传容器到Heroku

heroku container:release web --app  ***

注意要登录容器,否则会上传失败

*** 要和上面的名字统一

启动应用

进入app,点击open就可以进入了

查看日志

 heroku logs --tail -a ***

*** 要和上面的名字统一

常见问题

动态绑定端口号

需要动态绑定端口号,否则会出现

heroku[web.1]: State changed from crashed to starting
heroku[web.1]: Starting process with command `python /code/server3.py`
app[api]: Release v9 created by user ***@icloud.com
app[api]: Deployed web (350d1bd5740a) by user ***@icloud.com
heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
heroku[web.1]: Stopping process with SIGKILL
heroku[web.1]: Process exited with status 137

Dockerfile书写格式

Dockerfile中要这样写,传入$POST

#基于的基础镜像
FROM python:3.4#代码添加到code文件夹
ADD ./pythonProject /code# 设置code文件夹是工作目录
WORKDIR /code# 安装支持
#RUN pip install -r requirements.txtCMD python /code/server3.py $PORT

Python文件书写格式

在server.py中要通过参数获取

serverPort = int(sys.argv[1])

完整结构如下

if __name__ == '__main__':serverSocket = socket(AF_INET, SOCK_STREAM)serverPort = int(sys.argv[1])serverSocket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)serverSocket.bind(("", serverPort))serverSocket.listen(5)print('The server is running')# Main web server loop. It simply accepts TCP connections, and get the request processed in seperate threads.while True:# Set up a new connection from the clientconnectionSocket, addr = serverSocket.accept()# Clients timeout after 60 seconds of inactivity and must reconnect.connectionSocket.settimeout(600)# start new thread to handle incoming request_thread.start_new_thread(process, (connectionSocket,))

heroku部署python-docker的web服务器相关推荐

  1. windows2008R2+IIS部署python Django的web环境

    windows2008R2+IIS部署python Django的web环境 这篇文章写得非常好,非常仔细,作者把所有的坑都明确标识出来,可以少走很多弯路.感谢作者 潇洒哥Kahn 的辛苦付出. 这里 ...

  2. 服务器关闭重启后客户端socket能自动连接吗_用Python 撸一个 Web 服务器

    从一个 Hello World 程序说起 要编写 Web 服务器,需要用到一个 Python 内置库 socket.Socket 是一个比较抽象的概念,中文叫套接字,它代表一个网络连接.两台计算机之间 ...

  3. 使用docker搭建web服务器,提示无法访问此网站,怎么解决

    使用docker搭建web服务器,提示无法访问此网站,怎么解决 首先看容器是否起来: 正确如下图 如果没启动 docker ps -a查到容器 docker start 容器名 启动容器 如果没运行: ...

  4. python实现一个web服务器

    一,使用python开启一个web服务器 自带的simple_server模块开启一个服务器: from wsgiref.simple_server import make_server #导入sim ...

  5. (云服务器学习)部署python程序到云服务器

    (云服务器学习)部署python程序到云服务器 我本来好早就买了阿里云的服务器,以前叫做学生机,现在好像叫云翼计划,我感觉每年花个不到百元能玩玩也挺不错的.还能在上面搭建个人博客,跑跑程序,以后还能学 ...

  6. 记一次python后端从web服务器下载文件

    记一次tornado框架python后端从web服务器下载文件过程 date 2020.7.21 Q:暂定的过程 用post方法,先前用的get,传body内文件名. 1.首先获取前端需要下载什么文件 ...

  7. Python搭建静态web服务器

    核心还是使用Python的socket实现的,socket的具体用法前面文章有写,这里不写太多注释. 1.本地搭建python静态web服务器 在资源目录打开命令终端,输入命令:python -m h ...

  8. cdt规约报文用程序解析_用 Python 撸一个 Web 服务器第3章:使用 MVC 构建程序

    Todo List 程序介绍 我们将要编写的 Todo List 程序包含四个页面,分别是注册页面.登录页面.首页.编辑页面.以下分别为四个页面的截图. 注册页面: 登录页面: 首页: 编辑页面: 程 ...

  9. 如何优雅的部署Python应用到Linux服务器?

    文章目录 1 前言 2 安装Python3环境 2.1 安装所需的编译环境 2.2 下载Python源码包 2.3 解压 python-3.9.5 源码包 2.4 安装 python3 2.5 设置软 ...

  10. 用 Python 撸一个 Web 服务器-第1章:Web 开发简介

    前言 Web 开发技术一直在高速发展,各种新奇概念与框架层出不穷,尤其在 Web 前端领域,几年前还是 jQuery 的天下,而如今在 Vue.React 等框架面前也显得廉颇老矣. 不过,虽然各种框 ...

最新文章

  1. SQLALchemy之Python连接MySQL
  2. 利用JNI技术在Android中调用C++形式的OpenGL ES 2.0函数
  3. html脚本详解,HTML脚本教程详解
  4. SQL学习总结-思维导图
  5. 首份《顶级数据团队建设全景报告》重磅发布: 逾半数据团队称人才储备不足
  6. 全球及中国抓紧器行业十四五发展态势及前景规划建议报告2021-2027年版
  7. 同步代码块解决线程安全
  8. 15行代码AC——习题3-3 数数字 (UVa1225,Digit Counting)
  9. 微软CEO纳德拉恢弘计划:让开发者始终忘不了微软
  10. mysql数据库开发环境_MacOS下搭载开发环境之数据库篇(Mysql + Navicat)
  11. swt matlab 中 swa,Matlab小波工具箱的使用3
  12. Protocol类型限制
  13. es5.4.0-CentOS-6.5-x86_64安装文档
  14. dnf mysql密码多少_DNF 台服数据库密码加密算法
  15. 根据正则表达式创建NFA的Thompson算法 python实现
  16. 【数据库和SQL学习笔记】6.SELECT查询4:嵌套查询、对查询结果进行操作
  17. vue+typescript(vben-admin)前端开发
  18. 消费者理论:效用函数
  19. java this 逸出_this引用逸出
  20. 财税SaaS起风,税友股份成“中国版Intuit”?

热门文章

  1. 设计模式之模板方法模式(行为型)
  2. 【数据分析】业务分析中常见模型-波士顿矩阵、逻辑回归模型
  3. 基于stm32的遥控小船(一)L298N电机驱动
  4. stm32控制360度舵机和180度舵机
  5. PDF制作软件Adobe Acrobat及相关资源
  6. 网络通信原理与IP地址的分配原理
  7. Scanf函数的介绍与使用及特殊形式(C语言)
  8. 孩子台灯怎么选?双12儿童护眼台灯测评
  9. langid 代码对应的语种名
  10. 魔兽3 dota不能全屏