python容器部署
1. 下载镜像 下载镜像地址 我们此处下载
docker pull python
2. 容器部署
docker run -p 8000:8000 --name python -itd -v /data/www/htdocs/:/www python # 说明 --name python : 把容器命名为python -itd: i 以交互模式运行容器 t 为容器重新分配一个伪输入终端 d 后台运行容器,并返回容器ID 注意如果不加上it的话她或运行Python容器后自动关闭 -v /data/www/htdocs/:/www :将主机中/data/www/htdocs/目录挂载到容器的/www
3. 测试 在/data/www/htdocs目录下新建hello.py文件,内容为
#!/usr/bin/python
print("Hello World!")
4. 在终端输入
docker exec -it python python /www/hello.py
flask应用部署
1. 创建自定义网络
docker network create --subnet=172.18.0.0/16 mynetwork
2. 删除原python镜像, 创建新对象
docker rm -f python docker run --net mynetwork --ip 172.18.0.5 -p 8000:8000 --name python -itd -v /data/www/htdocs/:/www python
3. 安装扩展
在/data/www/htdocs目录下新建requirements.txt文件
flask
gunicorn
gevent
markdown
flask_bootstrap
如果你要安装其他拓展的话在requirements.txt文件中添加相关插件即可(注意一个插件换一行)
在终端输入如下命令进行安装:
# 使用国内镜像https://pypi.tuna.tsinghua.edu.cn/simple docker exec -it python pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r /www/requirements.txt
4. gunicorn配置
在/data/www/htdocs目录下新建gunicorn.conf.py文件
# 并行工作进程数
workers = 4
# 指定每个工作者的线程数
threads = 2
# 监听内网端口8000
bind = '0.0.0.0:8000'
# 设置守护进程,将进程交给supervisor管理
daemon = 'true'
# 工作模式协程
worker_class = 'gevent'
# 设置最大并发量
worker_connections = 2000
# 设置进程文件目录
pidfile = '/var/run/gunicorn.pid'
# 设置访问日志和错误信息日志路径
accesslog = '/var/log/gunicorn_acess.log'
errorlog = '/var/log/gunicorn_error.log'
# 设置日志记录水平
loglevel = 'warning'
5. 增加gunicorn启动文件
在/data/www/htdocs目录下新建gunicorn.py文件
import os
import sys
def start():
cmd = 'cd /www/eblog; gunicorn -c gunicorn.conf.py eblog:app'
os.system(cmd)
def stop():
cmd = "ps -ef | grep '/usr/local/bin/gunicorn' | awk '{print $2}' | xargs kill -9 > /dev/null 2>&1"
os.system(cmd)
def restart():
stop()
start()
if sys.argv[1] == 'start':
start()
elif sys.argv[1] == 'restart':
restart()
elif sys.argv[1] == 'stop':
stop()
else:
print('params error!')
6. 启动gunicorn
docker exec -i python python /www/gunicorn.py start