1.新建Dockerfile

FROM python:3.8.5
MAINTAINER ChsterChen
ENV PYTHONUNBUFFERED 1
COPY pip.conf /root/.pip/pip.conf
RUN mkdir -p /var/www/html/student_api
WORKDIR /var/www/html/student_api
ADD . /var/www/html/student_api
RUN pip install -r requirements.txt
RUN chmod a+rwx -R /var/www/html/student_api/
RUN pwd
VOLUME ["/tmp"]
EXPOSE 8000
ENTRYPOINT ["uwsgi", "--ini", "uwsgi-docker.ini"]
# RUN python manage.py collectstatic --noinput]

2.新建pip.conf国内镜像源

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

3.生成requirement.txt

pip3 freeze > requirements.txt

4.新建uwsgi-docker.ini配置文件

[uwsgi]
project=student_api
uid=www-data
gid=www-data
base=/var/www/html chdir=%(base)/%(project)
module=signup_api.wsgi:application
master=True
processes=2 http=0.0.0.0:8000 #这里直接使用uwsgi做web服务器,使用http。如果使用nginx,需要使用socket沟通。
buffer-size=65536 pidfile=/tmp/%(project)-master.pid
vacuum=True
max-requests=5000
# daemonize=/tmp/%(project)-uwsgi.log #注释掉,不然成为后台进程,容器会直接退出 #设置一个请求的超时时间(秒),如果一个请求超过了这个时间,则请求被丢弃
harakiri=60
#当一个请求被harakiri杀掉会,会输出一条日志
harakiri-verbose=true
static-map = /static=%(base)/%(project)/static

5.生成镜像

sudo docker build -t student_api:v1 .

6.运行容器

sudo docker run -v /docker/volume:/tmp -it -d --name student_api -p 8001:8000 student_api:v1

7.接口文档等前端静态文件无法通过uwsgi访问到,需通过python ./manage.py collectstatic把所有静态资源生成到STATIC_ROOT文件夹内    https://note.qidong.name/2017/07/uwsgi-serve-django-static/

先settings.py中修改

STATIC_ROOT = '你的项目目录/static'

然后通过以下命令把静态文件生成到STATIC_ROOT目录

python ./manage.py collectstatic

uwsgi配置文件中新增静态文件映射配置

static-map = /static=%(base)/%(project)/static

重新build镜像+运行容器

8.nginx配置

    location /
{
proxy_set_header Host $http_host; #重要,影响到接口文档的正常浏览
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:8001/;
}

nginx反向代理docker容器化django的更多相关文章

  1. redis反向代理docker容器中的rabbit mq服务

    最近做的项目中用到了docker,发现docker容器还真挺好用的,可以统一来管理各种资源,项目. 但是在实际使用中就碰到下面这个问题(下面所有的应用都是在docker中启动的): 通过nginx来反 ...

  2. nginx反向代理docker registry报”blob upload unknown"解决办法

    问题症状:keepalived+nginx反向代理后端docker registry群集时,使用docker客户机向registry push镜像时出现 "blob upload unkno ...

  3. 使用Nginx反向代理Docker的Asp.Net Core项目的请求

    承接上文的对Kestrel的思考 上一篇介绍了如何一下在docker中发布Asp.Net Core项目(传送门)在最后尝试从外网访问网站的时候发现请求的响应头中包含了这个信息Server:Kestre ...

  4. 使用docker化的nginx 反向代理 docker化的GSCloud 的方法

    1. 首先将nginx 的image pull 下来. docker pull nginx 2. 将最近的可用的 参数文件 复制过来当一个目录 mkdir /nginx ssh root@linuxs ...

  5. Docker学习笔记之-部署.Net Core 3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(一)

    上一节演示如何安装Docker,链接:Docker学习笔记之-在CentOS中安装Docker 本节演示 将.net core 3.1 部署到docker容器当中,并使用 Nginx反向代理,部署平台 ...

  6. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  7. 为docker私有registry配置nginx反向代理

    公司的Docker私有registry已经搭建好了,用官方的registry image很容易就搭建好了.现在就是要用nginx的反向代理把它放出来,以便在外网可以访问. 我的上一篇blog 讲了如何 ...

  8. docker,构建nginx反向代理tomcat

    Nginx实现负载均衡是通过配置nginx.conf来实现的,nginx.conf的全部内容如下: user nginx; worker_processes 1; error_log /var/log ...

  9. 通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署

    通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署 Intro Azure DevOps Pipeline 现在对于公开的项目完全免费,这对于开源项目来讲无疑是个巨大的 ...

随机推荐

  1. 836. Rectangle Overlap ——weekly contest 85

    Rectangle Overlap A rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) are the coor ...

  2. C#练习题 if

    提示用户输入用户名,然后再提示输入密码,如果用户名是"admin"并且密码是"888888",则提示正确,否则,如果用户名不是admin还提示用户用户名不存在, ...

  3. java实现科研信息管理系统

    一.前言 本学期学习了JAVA语言,在学期的结束,写一个有操作界面,与数据库关联的管理系统,用来巩固自己本学习所学的知识.用到的知识:JAVA基础,JAVA界面设计(GUI),Oracle数据库(需要 ...

  4. C# type对象

    新建控制台应用程序 新建一个类 class MyClass { private int id; private int age; public int numb; public string Name ...

  5. Tensorflow学习---argmax中axis问题

    一:argmax中axis问题 https://blog.csdn.net/qq575379110/article/details/70538051/ 总之:axis=0/1不是行/列关系 test ...

  6. git操作之二:git restore

    在上篇博客中留了一个问题,那就是git restore命令是做什么的,下面重点分析. 一.概述 git restore命令是撤销的意思,也就是把文件从缓存区撤销,回到未被追踪的状态. 该命令有git ...

  7. zabbix自动发现的python方式数据生成

    前言 zabbix里面有个功能是自动发现,比如文件系统和网卡的获取的时候,因为预先无法知道这个网卡的名称,所以就有了这个自动发现的功能,这里我是因为要用到存储池的自动发现,所以需要对数据进行生成 实现 ...

  8. ceph使用memdisk做journal

    记得在很久很久以前,ceph当时的版本是有提供使用内存做journal的配置的,当时是使用的tmpfs,但是现在的版本在搜资料的时候,发现关于这个的没怎么找到资料,邮件列表里面有人有提到怎么做,看了下 ...

  9. spring boot和spring cloud版本选择

    SpringBoot版本介绍 官网链接:https://spring.io/projects/spring-boot#learn Spring Boot的版本以数字表示.例如:Spring Boot ...

  10. 异或加密 - cr2-many-time-secrets(攻防世界) - 异性相吸(buuctf)

    Crib dragging attack 在开始了解 Crib dragging attack 之前,先来理一理 异或. 异或加密 [详情请戳这里] XOR 加密简介 异或加密特性: ① 两个值相同时 ...