使用docker部署uwsgi+mysql+nginx+redis的django项目

本文详细介绍如何使用Docker配置Python环境,包括拉取镜像、创建虚拟环境、安装依赖,以及部署uwsgi、nginx、mysql和redis服务,实现Python Web项目的完整运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

uwsgi的python环境容器配置如下:

首先拉取python3.6环境镜像文件,这里拉取为python3.6环境并且对于utf8编码支持,自带virtualenv虚拟环境包

# 拉取mc706/pipenv-3.6镜像
docker pull mc706/pipenv-3.6

如果拉取比较慢,可以考虑是否有更换docker源地址,之前题主有写到更换docker源地址的博客,可以移驾至:ubuntu下的docker运用_几度悠然的博客-优快云博客

守护模式运行镜像:

# 以守护模式运行镜像,设容器名为pythonenvs,并映射8001端口
docker run -di --name=pythonenvs  -p 8001:8001  mc706/pipenv-3.6

将项目拷贝到容器home目录下:

# 将项目文件拷贝至容器pythonenvs下的home目录下
docker cp  项目文件夹  pythonenvs:/home/

交互模式进入容器:

docker exec -it pythonenvs  /bin/bash

进入容器后更新apt-get源:

apt-get update

下载vim编辑器:

apt-get install  vim

新建文件夹:

mkdir ~/.pip

更换pip源地址为阿里地址:

vim ~/.pip/pip.conf

加入如下内容并保存:

[global] 
trusted-host=mirrors.aliyun.com
index-url=http://mirrors.aliyun.com/pypi/simple

安装virtualenvwrapper:

pip install virtualenvwrapper

编辑.bashrc文件:

vim ~/.bashrc

在文件最后添加如下内容:

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh

让编辑后的文件生效:

source ~/.bashrc

新建虚拟环境test:

mkvirtualenv test

在确定进入到test环境下安装项目所需的包:

pip install -r requirements.txt

安装uwsgi服务:

pip install uwsgi

进入到项目下manage.py同级目录下新建uwsgi.ini文件并编辑:

vim uwsgi.ini

添加如下配置信息:

uwsgi]
# http = 172.17.0.2:8001 # uwsgi启动ip+端口(不使用nginx时)
socket = 172.17.0.2:8001 # uwsgi启动ip+端口(使用nginx时)
chdir = 项目绝对路径(到manage.py所在文件夹下)
wsgi-file = xxx/wsgi.py(相对于chdir的wsgi.py的位置)
master = true # ----》主进程
processes=10  # ---->最大数量的工作进程
pidfile=uwsgi.pid
daemonize=uwsgi.log # 存放uwsgi日志
virtualenv = 虚拟环境路径(/home/.virtualenvs/test)

以上配置文件请根据自己的实际情况修改,题主已给出提示信息

启动uwsgi:

uwsgi --ini uwsgi.ini

可以查看uwsgi.log判断服务是否启动成功

最后可以通过宿主机浏览器,通过127.0.0.1:8001来访问测试(如果你用的是restframework框架的话)

------------------------------------------------------------------------分割线----------------------------------------------------------------------------------

以下是关于nginx的docker配置如下:

拉取ngixn镜像:

docker pull nginx

以守护模式运行nginx镜像:

docker run -di --name=nginx_test nginx

新建文件,用于存放nginx配置文件:

mkdir /etc/project_nginx

将nginx配置文件拷贝至本地:

docker cp nginx_test:/etc/nginx  /etc/project_nginx/

关闭并删除nginx容器:

# 关闭nginx容器
docker stop nginx_test 
# 删除nginx容器
docker rm nginx_test

重新建立nginx容器,并将配置文件挂载至nginx容器内:

docker run -di --name=nginx -p 80:80 -p 8000:8000 -v /etc/project_nginx/nginx:/etc/nginx nginx

将静态文件拷贝至容器内:

docker cp  静态文件(如static文件夹,文件夹下面第一级必须有index.html文件)  nginx:/usr/share/nginx/html/

修改宿主机本地nginx配置文件:

vim /etc/project_nginx/nginx/conf.d/default.conf

修改如下:

修改另一个nginx配置文件:

vim /etc/project_nginx/nginx/nginx.conf

添加如下信息:

配置完成后重启nginx容器:

docker restart nginx

以上nginx配置完成~~~~~~~~~~~

----------------------------------------------------------------------分割线------------------------------------------------------------------------------------------

以下是关于mysql的docker配置如下:

mysql配置很简单如下:

首先拉取镜像:

docker pull mysql

以守护模式启动mysql,并为root用户设置密码,映射3306端口(请确保3306端口未被占用,最好本地未安装mysql以免冲突)

docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root密码 mysql

进入mysql容器:

docker exec -it mysql /bin/bash

进入mysql数据库,并创建项目所需的表,到此mysql配置完成

---------------------------------------------------------------------分割线-------------------------------------------------------------------------------------------

以下是关于redis的docker配置如下:

拉取redis镜像:

docker pull redis

以守护模式启动redis,并映射6379端口(请确保6379端口未被占用,最好本地未安装redis以免冲突)

docker run -di --name=redis -p 6379:6379 redis

redis配置完成

~~~~~~~修改相应的连接redis数据库,mysql数据库的ip地址,重启uwsgi部署完成

~此时可以通过宿主机http://宿主机ip访问你所部署的网站了

~~~~~~~~原创制作,转载请注明出处,谢谢^o^

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值