docker使用gunicorn部署django项目并保存为镜像(一)

18 篇文章 0 订阅
14 篇文章 0 订阅
1. 拉取镜像python
docker pull python:3.8-alpine
2. 创建容器:
docker run -itd  --name python:3.8-alpine python
3. 进入容器,安装django, pymysql :

docker exec -it python sh
pip install django
pip install pymysql
pip install gunicorn

4. 新建webapps目录,将宿主中的项目复制到此处

mkdir webapps
退出容器后执行:
docker cp django_project01 contain_id:/webapps

5.启动项目

进入容器执行:
docker exec -it python sh
方式1:
gunicorn -w 3 -b 0.0.0.0:8888 django_project01.wsgi &
方式2:
gunicorn -D -w 3 -b 0.0.0.0:8888 django_project01.wsgi
方式3:
创建gunicorn_config.py

import logging
import logging.handlers
from logging.handlers import WatchedFileHandler
import os
import multiprocessing

bind = '0.0.0.0:8888'      #绑定ip和端口号
backlog = 512                #监听队列
chdir = '/webapps/django_project01'  #gunicorn要切换到的目的工作目录,此目录一般指定到项目目录下
timeout = 30      #超时
worker_class = 'sync' #使用gevent模式,还可以使用sync 模式,默认的是sync模式

workers = multiprocessing.cpu_count() * 2 + 1    #进程数
threads = 2 #指定每个进程开启的线程数,一般worker_class 为gevent使用
loglevel = 'info' #日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
accesslog = "/var/log/gunicorn_access.log"      #访问日志文件
errorlog = "/var/log/gunicorn_error.log"        #错误日志文件

gunicorn django_project01.wsgi -c gunicorn_config.py

遇到问题:

a. 对于已经启动的容器如何添加端口映射
cd /var/lib/docker/containers/容器id
修改如下两个文件
在这里插入图片描述
修改config.v2.json:
添加: “ExposedPorts”:{“8888/tcp”:{}},
在这里插入图片描述
修改hostconfig.json:
修改为:“PortBindings”:{“8888/tcp”:[{“HostIp”:"",“HostPort”:“8888”}]}
其中第一个8888是容器的端口,后面那个是映射的端口
在这里插入图片描述
b.如何提交当前容器为镜像,并推送
使用如下三条命令:
docker commit -a “wxb” -m “可以部署django项目的python容器镜像” 0b34de831d7a thisisnewworld/python:3.8_django

docker login

docker push hisisnewworld/python:3.8_django

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值