前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker uwsgi django

Docker uwsgi django

原创
作者头像
vanguard
修改2021-02-03 18:00:37
1.3K0
修改2021-02-03 18:00:37
举报
文章被收录于专栏:vanguardvanguard

Docker服务器安装

代码语言:shell
复制
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# curl -sSL https://get.daocloud.io/docker | sh

创建Dockerfile,这里路径在项目外层

代码语言:shell
复制
FROM python:3.8
MAINTAINER hello_django
COPY hello_django /hello_django
WORKDIR ./
RUN pip install Django==3.1.5 -i https://mirrors.aliyun.com/pypi/simple/
RUN pip install djangorestframework==3.12.2 -i https://mirrors.aliyun.com/pypi/simple/
RUN pip install uwsgi -i https://mirrors.aliyun.com/pypi/simple/
RUN pip install gunicorn -i https://mirrors.aliyun.com/pypi/simple/
EXPOSE 8080

镜像操作

代码语言:shell
复制
# 构建镜像
docker build -t hello_django:1.0 .
# 查看所有容器
docker container ls -a
# 查看已有镜像
docker images
docker image ls -a
# 查看实例
docker ps
# 导出镜像
docker save -o hello_django hello_django:1.0
# 导入镜像
docker load<hello_django
# 停止正在运行的容器
docker stop container-id
# 重启已经停止的容器
docker start container-id
# 不管容器是否启动都直接重启容器
docker restart container-id
# 删除不需要的容器
docker rm container-id
# 删除不需要的镜像
docker image rm image-id
# 运行镜像
docker run -d -p 8080:8080 --rm hello_django:1.0 python ./hello_django/manage.py runserver 0.0.0.0:8080
# 打开页面
open http://localhost:8080
# 进入虚拟空间命令行
docker exec -it PID bash

参考基本操作后,结合uwsgi部署生产环境,uwsgi.ini和Dockerfile都放在项目根目录下

代码语言:text
复制
[uwsgi]
http= :8999
procname-prefix-spaced=hello_django
module = hello_django.wsgi:application
chdir = /hello_django/
pidfile = uwsgi.pid
socket = uwsgi.sock
master = true
vacuum = true
thunder-lock = true
enable-threads = true
workers = 5
harakiri = 30
processes = 8
py-autoreload = 1
chmod-socket = 664
post-buffering = 4096

准备容器

代码语言:shell
复制
FROM python:3.8
MAINTAINER hello_django
COPY . /hello_django
WORKDIR /hello_django
RUN pip install -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
CMD ["uwsgi", "--ini", "uwsgi.ini"]
EXPOSE 8999
# Django==3.1.5
# djangorestframework==3.12.2
# uwsgi

执行docker生成镜像并运行即可

代码语言:shell
复制
# pipreqs ./ --encoding=utf-8 --force
docker build -t hello_django:1.0 .
docker run -it -d -p 8999:8999 hello_django:1.0

注意路径,都是容器内部路径,日志路径daemonize 保证进程自守护。在这个选项中通常会配置一个文件地址,日志会写入这个地址。如果不配置 daemonize,uWSGI 会在前台运行,日志输入到 STDOUT。这种情况下,建议用 Supervisor 来管理 uWSGI 进程。 因为 Sueprvisor 要求被管理的程序必须运行在非守护模式。当使用了 Supervisor 来管理进程后,uWSGI 输入到 STDOUT 的日志会被 Supervisor 的日志系统接管。

如果使用asgi异步网关

代码语言:shell
复制
FROM python:3.8
MAINTAINER hello_django
COPY . /hello_django
WORKDIR /hello_django
RUN pip install -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
CMD ["uvicorn","--host","0.0.0.0","--port","8080", "hello_django.asgi:application"]
EXPOSE 8080

注意地址和端口

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档