一,基础镜像

【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内容的更多相关文章

  1. 在nginx上部署django项目--------Gunicorn+Django+nginx+mysql

    一.安装nginx 以前的博客我有写,这里就不写了 http://www.cnblogs.com/wt11/p/6420442.html 二.安装mysql 我用的mysql5.7  64位的二进制包 ...

  2. 一次线上OOM故障排查经过

    转贴:http://my.oschina.net/flashsword/blog/205266 本文是一次线上OOM故障排查的经过,内容比较基础但是真实,主要是记录一下,没有OOM排查经验的同学也可以 ...

  3. Django线上部署教程:腾讯云+Ubuntu+Django+Uwsgi(转载)

    网站名称: 向东的笔记本 本文链接: https://www.eastnotes.com/post/29 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议.转载请注明出处! ...

  4. 线上Django项目python2到3升级日记

    这两天干了一个几斤疯狂的事情,花不到一个工作日的时间把一个线上Django项目语言版本从python2升级到Python31.字典的一个语法变化 Python2.7: if dict1.haskey( ...

  5. 记录线上与本地docker镜像一致,但Dockerfile却构建失败的问题

    背景 公司新开了某个项目,我在新的服务器部署了docker环境,本着ctrl+c 和ctrl+v的惯例,直接把以前的php环境的Dockerfile文件直接复制到新项目服务器那里,结果构建失败,失败的 ...

  6. Django线上部署代码修改失效问题

    记一次django项目的线上部署维护问题,django+nginx 关于nginx反向代理服务器的介绍这里有一篇博客介绍的比较好:nginx的相关介绍 以及当一次客户端请求发出后,uwsig以及uWS ...

  7. Arthas协助排查线上skywalking不可用问题

    前言 首先描述下问题的背景,博主有个习惯,每天上下班的时候看下skywalking的trace页面的error情况.但是某天突然发现生产环境skywalking页面没有任何数据了,页面也没有显示任何的 ...

  8. Django (auth模块、User对象、用户认证、线上-用户认证)

    一.auth模块 django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: authenticate()    提供了用户认证,即验证用户名以及密码是否正确,一般需要usern ...

  9. 分布式存储 FastDFS-5.0.5线上搭建

    前言:       由于公司项目需要,最近开始学习一下分布式存储相关知识,确定使用FastDFS这个开源工具.学习之初,自己利用VMware虚拟机搭建了一个5台机器的集群,摸清了安装过程中可能出现的问 ...

随机推荐

  1. redis5.0.4安装配置

    1.下载redis wget http://download.redis.io/releases/redis-5.0.4.tar.gz 2.解压到opt目录 tar -zxvf redis-5.0.4 ...

  2. 动态构建Lambda表达式实现EF动态查询

    在使用Entity Framework做数据查询的时候,查询条件往往不是固定的,需要动态查询.可以通过动态构建Lamda表达式来实现动态查询. Lamda表达式 使用Lamda表达式可以很方便的按条件 ...

  3. optix之纹理使用

    1.在OpenGL中生成纹理texture optix中的纹理直接使用OpenGL纹理的id,不能跨越OpenGL纹理,所以我们先在OpenGL环境下生成一张纹理. 这个过程就很熟悉了: void W ...

  4. 201871010114-李岩松《面向对象程序设计(java)》第十四周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  5. webdriver-键盘操作 for java

    2017年01月17日 17:08:25 阅读数:2044 import java.awt.AWTException;import java.awt.Robot;import java.awt.eve ...

  6. Yet Another Broken Keyboard

    time limit per test2 secondsmemory limit per test256 megabytesinput: standard inputoutput: standard ...

  7. 数据结构与算法-Python/C(目录)

    第一篇 基本概念 01 什么是数据结构 02 什么是算法 03 应用实例-最大子列和问题 第二篇 线性结构 01 线性表及其实现 02 堆栈 03 队列 04 应用实例-多项式加法运算 05 小白专场 ...

  8. navicat连接mysql报错1251解决方案,从头搭建node + mysql 8.0 (本人亲测有效)

    准备学node 好久了 一直没有动手去写,今天突发奇想,然后就安装了一个mysql (找了一个博客跟着步骤去安装的),然后打算用node 写个增删改查. 1.下载mysql安装包   地址: http ...

  9. 搞定Junit单元测试{非专业}

    1:测试分类 2:常用测试方法 2.1 断言语句 3: 基本测试 4: 组合测试 5:参数化测试 6:分类测试(Category) 1:测试分类  1. 黑盒测试:不需要写代码,给输入值,看程序是否能 ...

  10. mysqlslap详解--MySQL自带的性能压力测试工具(转)

    本文的参考博客地址为:https://blog.csdn.net/fuzhongfaya/article/details/80943991 和 https://www.cnblogs.com/davy ...