Docker部署Python项⽬
简介
软件开发最⼤的⿇烦事之⼀就是环境配置,操作系统设置,各种库和组件的安装。只有它们都正确,软件才能运⾏。如果从⼀种操作系统⾥⾯运⾏另⼀种操作系统,通常我们采取的策略就是引⼊虚拟机,⽐如在 Windows 系统⾥⾯运⾏ Linux 系统。这种⽅式有个很⼤的缺点就是资源占⽤多、冗余步骤多、启动慢。⽬前最流⾏的 Linux 容器解决⽅案之⼀就是Docker,它最⼤优点就是轻量、资源占⽤少、启动快。本⽂从什么是Docker?Docker解决什么问题?有哪些好处?如何去部署实现去全⾯介绍。
docker部署项⽬优势
设想这样⼀个真实案例,假如我们要部署⼀个Python应⽤程序,要做哪些⼯作?⾸先需要python运⾏环境,⽐如部署的是python3,⽽机器上是python2。先装个python3,还要装各种依赖包,机器⼀些可能的冲突。装完python之后,发现还要装mysql或者redis。继续下载安装配置。啥?服务器不⽤了,需要换⼀台服务器?那重新来⼀遍吧。啥?基础应⽤做的太好要进⾏推⼴,需要指导其他⼚商部署?这怎么办?可以看出,在 Docker 之前软件⾏业的运维存在着以下这些痛点:
# 1. 软件的发布和部署低效⼜繁琐,⽽且总是需要⼈⼯介⼊
# 2. 环境的⼀致性难移保证
# 3. 在不同环境之间迁移的成本较⾼
在完成Docker部署安装之前,我们还是先认识下Docker的优点:
# 1. 软件构建容易,分发简单
# 2. 应⽤得到隔离,依赖被解除
# 3. 可以完美地⽤于 CI/CD
# 4. 快速部署,测试完以后销毁也⽅便
⽅式⼀: 基于Python基础镜像
python新建项目教程
# 准备数据⽬录
mkdir myproject
cd myproject
docker run -di --name=myproject -p 8080:8080 -v /home/myproject:/home python:3.6
# 将你的项⽬上传到服务器挂载的存储卷上
scp 149.129.38.117:
cp /root/ /home/myproject/
tar xvf
# 进⼊容器安装相关依赖
pip install -
apt-get update
apt-get install vi
# setting.py 改成下⾯
ALLOWED_HOSTS = ['*']
# 运⾏项⽬(wsgiref)
python manage.py runserver 0.0.0.0:8080
uwsgi运⾏项⽬
pip3 install uwsgi
# 在项⽬根路径下创建⼀个uwsgi.ini ⽂件,写⼊
[uwsgi]
#配置和nginx连接的socket连接
socket=0.0.0.0:8080
#也可以使⽤http
#http=0.0.0.0:8080
#配置项⽬路径,项⽬的所在⽬录
chdir=/home/django_test
#配置wsgi接⼝模块⽂件路径
wsgi-file=django_test/wsgi.py
#配置启动的进程数
processes=4
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号⽂件
pidfile=uwsgi.pid
#配置dump⽇志记录
daemonize=uwsgi.log
#启动,停⽌,重启,查看
uwsgi --ini uwsgi.ini #启动
lsof -i :8001    #按照端⼝号查询
ps aux | grep uwsgi   #按照程序名查询
kill -9 13844      #杀死进程
uwsgi --stop uwsgi.pid      #通过uwsg停⽌uwsgi
uwsgi --reload uwsgi.pid  #重启
# nginx转发
mkdir -p nginx/conf nginx/html nginx/logs
# 在conf⽬录下新建f
worker_processes  1;
events {
worker_connections  1024;
}
http {
include      pes;
default_type  application/octet-stream;
sendfile        on;
keepalive_timeout  65;
server {
listen      80;
server_name  localhost;
location / {
#uwsgi_pass 149.129.38.117:8080;
proxy_pass 149.129.38.117:8080;
}
error_page  500 502 503 504  /50x.html;
location = /50x.html {
root  html;
}
}
}
docker run --name nginx -id -p 80:80 -v /home/nginx/f:/etc/f -v /home/nginx/html:/etc/nginx/html -v /home/nginx/logs:/var/log/nginx nginx # 在 python的docker中⽤uwsgi跑起项⽬来即可
# 外部访问:149.129.38.117/

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。