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. vim编辑器使用简介

    使用格式 vim [option] /path/to/somefile ... option: -o水平分割 -O垂直分割 +打开后在最后一行 +Num打开后在地Num行,加号与Num之间不能有空格 ...

  2. It is better to have the ability of fast learning

    来自某位大佬: 内功=算法+数据结构+编译原理+操作系统原理+软件工程+英文 十足的自信心+强烈的求知欲+对Programming&&C&&CPP的执着+百折不挠的钻研 ...

  3. 想更改Github仓库中的某个文件结构

    虽然有各种版本回退啥的,可是感觉好麻烦,还是没搞来,后来发现可以直接先删除,然后在本地更改,更改完之后重新添加一次即可 删除远程库的某个文件: $ git pull origin master 将远程 ...

  4. IP 层收发报文简要剖析3--ip输入报文分片重组

    在ip_local_deliver中,如果检测到是分片包,则需要将报文进行重组.其所有的分片被重新组合后才能提交到上层协议,每一个被重新组合的数据包文用ipq结构实例来表示 struct ipq { ...

  5. java8-lambda-list中字符出现字数的统计

    @Test public void testStringCount(){ List<String> moidList1 = new ArrayList<>(); moidLis ...

  6. 关于vm.min_free_kbytes的合理设置推测

    前言 之前系统出现过几次hung住的情况,没有oom,也没有其它内存相关的信息,而linux设计就是去尽量吃满内存,然后再回收清理的机制 探讨 目前这个参数还没有找到合适的处理这个预留的参数,一般也没 ...

  7. 这 5 个开源的能挣钱的 SpringBoot 项目,真TMD香!

    不得不佩服 Spring Boot 的生态如此强大,今天我给大家推荐几款 Gitee 上优秀的后台开源版本的管理系统,小伙伴们再也不用从头到尾撸一个项目了,简直就是接私活,挣钱的利器啊. SmartA ...

  8. “三剑客”之sed手中有剑

    一.sed介绍 sed是Stream Editor(字符流编辑器)的缩写,简称流编辑器.sed是操作.过滤和转换文本内容的强大工具.常用功能包括对文件实现快速增删改查(增加.删除.修改.查询),其中查 ...

  9. SQL Server 常用近百条SQL语句(收藏版)

    1. sqlserver查看实例级别的信息,使用SERVERPROPERTY函数 select SERVERPROPERTY ('propertyname') 2. 查看实例级别的某个参数XX的配置 ...

  10. Spring第四天,BeanPostProcessor源码分析,彻底搞懂IOC注入及注解优先级问题!