线上可用django和gunicorn的dockerfile内容
一,基础镜像
【xxx.com.cn/3rd_part/python.3.6.8:alpine3.9-mysqlclient1.4.2】
FROM python:3.6.8-alpine3.7
MAINTAINER Takuya Noguchi <takninnovationresearch@gmail.com>
RUN apk add --update --no-cache mariadb-client-libs \
&& apk add --no-cache --virtual .build-deps \
mariadb-dev \
gcc \
musl-dev \
&& pip install mysqlclient==1.4.2 \
&& apk del .build-deps
二,中间件镜像
【xxx.com.cn/xxx-4k:base-0.4】
FROM xxx.com.cn/3rd_part/python.3.6.8:alpine3.9-mysqlclient1.4.2
MAINTAINER xxx-4K
COPY requests.txt /tmp/requests.txt
COPY kubectl /docker/home/docker/bin/kubectl14
COPY cx_Oracle-7.2.2-cp36-cp36m-linux_x86_64.whl /tmp/cx_Oracle-7.2.2-cp36-cp36m-linux_x86_64.whl
COPY Pillow-5.4.1-cp36-cp36m-linux_x86_64.whl /tmp/Pillow-5.4.1-cp36-cp36m-linux_x86_64.whl
COPY pycryptodome-3.9.0-cp36-cp36m-linux_x86_64.whl /tmp/pycryptodome-3.9.0-cp36-cp36m-linux_x86_64.whl
RUN pip install -r /tmp/requests.txt \
&& pip install /tmp/cx_Oracle-7.2.2-cp36-cp36m-linux_x86_64.whl\
&& pip install /tmp/Pillow-5.4.1-cp36-cp36m-linux_x86_64.whl\
&& pip install /tmp/pycryptodome-3.9.0-cp36-cp36m-linux_x86_64.whl\
&& chmod 755 /docker/home/docker/bin/kubectl14 \
&& ln -s /docker/home/docker/bin/kubectl14 /usr/local/bin/kubectl \
&& rm -rf ~/.cache/* \
&& rm -rf /tmp/* \
&& echo 'finished!!!'
requirementes.txt
amqp==2.2.2 Babel==2.1.1 billiard==3.5.0.3 celery==4.1.0 certifi==2017.11.5 chardet==3.0.4 Django==2.0 django-cors-headers==2.4.0 django-redis==4.8.0 django-tinymce==2.7.0 django-widget-tweaks==1.4.3 djangorestframework==3.7.3 flower==0.9.2 gunicorn==19.6.0 idna==2.6 IPy==0.83 kafka-python==1.4.3 kombu==4.1.0 multi-key-dict==2.0.3 pbr==3.1.1 PyMySQL==0.8.0 python-jenkins==1.4.0 pytz==2017.3 PyYAML==3.13 redis==2.10.6 requests==2.18.4 setuptools-git==1.2 six==1.11.0 sqlparse==0.3.0 tornado==5.1 urllib3==1.22 vine==1.1.4 xlrd==1.1.0 xlwt==1.3.0
三,业务镜像
【xxx.com.cn/itil/itil-4k-gunicorn:K8S-20191018184523MP】
FROM xxx.com.cn/xxx-4k:base-0.4 COPY 4k.zip /4k/temp/4k.zip COPY bootstart.sh /xxx/bootstart.sh CMD sh /xxx/bootstart.sh
[bootstart.sh]
#!/bin/bash zip_dir="/xxx/temp" zip_file=`ls $zip_dir/*.zip` mkdir $zip_dir/deploy_temp unzip $zip_file -d $zip_dir/deploy_temp mkdir -p /apps/xxx cp -ar $zip_dir/deploy_temp/xxx/ /apps/xxx/ cd /apps/xxx/ sh start_gunicorn_k8s.sh
[start_gunicorn_k8s.sh]
gunicorn -c gunicorn_k8s.ini 4K.wsgi
[gunicorn_k8s.ini]
bind = "0.0.0.0:9123" workers = 4 errorlog = './gunicorn.error.log' accesslog = './gunicorn.access.log' timeout = 3000 loglevel = 'debug' proc_name = 'gunicorn_proc' access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"' worker_connections = 1000 max_requests = 2000 graceful_timeout = 300 loglevel = 'debug' daemon = 'false'
[wsgi]
"""
WSGI config for 4K project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "4K.settings.prd")
application = get_wsgi_application()
四,YAML文件
---
apiVersion: v1
kind: Service
metadata:
labels:
name: 4k-gunicorn
name: 4k-gunicorn
namespace: default
spec:
ports:
- port: 9090
targetPort: 9123
selector:
name: 4k-gunicorn
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: 4k-gunicorn
namespace: default
spec:
replicas: 1
selector:
matchLabels:
name: 4k-gunicorn
template:
metadata:
labels:
name: 4k-gunicorn
spec:
imagePullSecrets:
- name: 4kharbor
containers:
- name: 4k-gunicorn
image: xxx.com.cn/itil/itil-4k-gunicorn:K8S-20191018453216MP
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9123
线上可用django和gunicorn的dockerfile内容的更多相关文章
- 在nginx上部署django项目--------Gunicorn+Django+nginx+mysql
一.安装nginx 以前的博客我有写,这里就不写了 http://www.cnblogs.com/wt11/p/6420442.html 二.安装mysql 我用的mysql5.7 64位的二进制包 ...
- 一次线上OOM故障排查经过
转贴:http://my.oschina.net/flashsword/blog/205266 本文是一次线上OOM故障排查的经过,内容比较基础但是真实,主要是记录一下,没有OOM排查经验的同学也可以 ...
- Django线上部署教程:腾讯云+Ubuntu+Django+Uwsgi(转载)
网站名称: 向东的笔记本 本文链接: https://www.eastnotes.com/post/29 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议.转载请注明出处! ...
- 线上Django项目python2到3升级日记
这两天干了一个几斤疯狂的事情,花不到一个工作日的时间把一个线上Django项目语言版本从python2升级到Python31.字典的一个语法变化 Python2.7: if dict1.haskey( ...
- 记录线上与本地docker镜像一致,但Dockerfile却构建失败的问题
背景 公司新开了某个项目,我在新的服务器部署了docker环境,本着ctrl+c 和ctrl+v的惯例,直接把以前的php环境的Dockerfile文件直接复制到新项目服务器那里,结果构建失败,失败的 ...
- Django线上部署代码修改失效问题
记一次django项目的线上部署维护问题,django+nginx 关于nginx反向代理服务器的介绍这里有一篇博客介绍的比较好:nginx的相关介绍 以及当一次客户端请求发出后,uwsig以及uWS ...
- Arthas协助排查线上skywalking不可用问题
前言 首先描述下问题的背景,博主有个习惯,每天上下班的时候看下skywalking的trace页面的error情况.但是某天突然发现生产环境skywalking页面没有任何数据了,页面也没有显示任何的 ...
- Django (auth模块、User对象、用户认证、线上-用户认证)
一.auth模块 django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: authenticate() 提供了用户认证,即验证用户名以及密码是否正确,一般需要usern ...
- 分布式存储 FastDFS-5.0.5线上搭建
前言: 由于公司项目需要,最近开始学习一下分布式存储相关知识,确定使用FastDFS这个开源工具.学习之初,自己利用VMware虚拟机搭建了一个5台机器的集群,摸清了安装过程中可能出现的问 ...
随机推荐
- linux上下键,rlwrap来解决
需要安装两个包1.readline,配置好yum直接安装[root@test152 ~]# yum install readline*2.rlwrap这个下载连接当前有效,找了很多没找到有用的http ...
- oracle表空间设置自动扩展
开启自动扩展功能语法: alter database datafile '对应的数据文件路径信息' autoextend on; 关闭自动扩展功能语法: alter database datafile ...
- 3. java 方法入门
一.方法定义 1. 定义格式 public static void 方法名称(){ 方法体 } 1. 方法名称:命名和变量一致,小驼峰式 2. 方法体:大括号中可以包含任意条语句 注意事项: 1. 方 ...
- 06. Go 语言结构体
Go语言结构体(struct) Go 语言通过用自定义的方式形成新的类型,结构体是类型中带有成员的复合类型.Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性. Go 语言中的类 ...
- AD软件笔记
问题1:不同网络的线可以重叠在一起 解决方法1: 在AD中,可以通过 SHIFT+R 快捷键 设置 三种布线模式(忽略 避开 或者 推挤) 解决方法2: 设置规则的Ele ...
- [题解向] Manacher简单习题
\(1\) LG1659 [国家集训队]拉拉队排练 求前\(k\)大的奇数长度回文串的长度之积. \(\rm |S|\leq 1e6,K\leq 1e12\) --一开始觉得挺水,就开始二分最少长度能 ...
- 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 2
18.2 PDO所支持的数据库 使用PHP可以处理各种数据库系统,包括MySQL.PostgreSQL.Oracle.MsSQL等.但访问不同的数据库系统时,其所使用的PHP扩展函数也是不同的.例如 ...
- 如何使用pm2一键部署node应用
准备工作 准备一台linux服务器(本文档以阿里centos为例) 安装nodejs.git.pm2等环境 项目代码 本地已经安装用于连接 Linux 实例的工具,如 Xshell 基本流程 前两步传 ...
- 100款机械CAD图纸,想要出图快,勤练是最有效的方式之一!
提升CAD出图效率最有效的方式就是勤加练习,所以跟着小匠每天练习3个,30天把这100个常用的CAD机械图纸练完,再看你的出图效率!贵在坚持! 100个机械CAD图纸,请收好
- linux下 sort | uniq | wc | less 几个命令的基本用法
sort -f :忽略大小写的差异,例如 A 与 a 视为编码相同: -b :忽略最前面的空格符部分: -M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法: -n :使用『纯数字』进行 ...