编译一个支持django及mysqlclient连接的alpine镜像
一切都不难,难的就是在alpine镜像里。
最后,使用了网上编译好mysqlclient的镜像,才搞定。
记录一下。
一,基础镜像Dockerfile
https://github.com/tnir/mysqlclient
FROM python:3.6.8-alpine3.9 MAINTAINER Takuya Noguchi <takninnovationresearch@gmail.com> RUN apk add --update --no-cache mariadb-connector-c-dev \ && apk add --no-cache --virtual .build-deps \ mariadb-dev \ gcc \ musl-dev \ && pip install mysqlclient==1.4.2.post1 \ && apk del .build-deps
二,扩展的Dockerfile
使用了HTTP代理及公司内部PYPI仓库,脱敏处理
FROM tnir/mysqlclient:1.4.2 MAINTAINER CG COPY requests.txt /tmp/requests.txt 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 export http_proxy=http://xxx:8080 \ && export https_proxy=http://xxx:8080 \ && export ftp_proxy=xxx:8080 \ && pip install -r /tmp/requests.txt -i http://xxx.com.cn/root/pypi/+simple/ --trusted-host xxx.com.cn \ && 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\ && rm -rf ~/.cache/* \ && rm -rf /tmp/* \ && echo 'finished!!!'
三,requests.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
四,注意事项
如果有的pip直接从pypi仓库安装麻烦,可以考虑直接下载对应的whl文件离线安装。
毕竟,线上追求的是小巧而安全的docker镜像。
编译一个支持django及mysqlclient连接的alpine镜像的更多相关文章
- 编译一个支持多线程的php安装包
前言 因为项目上的需要,需要用到php,一般来说,用默认的版本和配置就可以满足大多数的场景,因为需要加入多线程,所以需要自己编译一个包 一般来说,发行的包的版本的配置选项和代码都是最稳定的,所以在大多 ...
- docker:一个支持django的dockerfile
其中,包括了主要的生产环境模块, 从alpine作起,镜像不大.保存用. FROM alpine:3.7 COPY . /target-dir WORKDIR /target-dir RUN sed ...
- 配置开发支持高并发TCP连接的Linux应用程序全攻略
http://blog.chinaunix.net/uid-20733992-id-3447120.html http://blog.chinaunix.net/space.php?uid=16480 ...
- Linux配置支持高并发TCP连接(socket最大连接数)
Linux配置支持高并发TCP连接(socket最大连接数) Linux配置支持高并发TCP连接(socket最大连接数)及优化内核参数 2011-08-09 15:20:58| 分类:LNMP&a ...
- ios 编译openssl支持arm64(转)
最近在编译支付宝 快捷支付(无线) ios 端的时候发现demo不支持arm64.在网上找了下,看到客服说是openssl的库文件不支持arm64,于是自己编译了支持arm64的库文件,发现还是不行, ...
- 多进程解决datasnap支持的tcp长连接数量少的问题
对于实时采集数据的项目,应用场景比如是这样的:5000客户端,每个客户端每隔500MS要给服务器上传一次数据. 大家知道,像INDY这种阻塞型的通信控件,所能支持的TCP长连接的一般地不能超过1000 ...
- python 开发一个支持多用户在线的FTP
### 作者介绍:* author:lzl### 博客地址:* http://www.cnblogs.com/lianzhilei/p/5813986.html### 功能实现 作业:开发一个支持多用 ...
- 编译GDAL支持ArcObjects
编译GDAL支持ArcObjects. 首先修改nmake.opt文件中对应的ArcObjects,修改后的如下所示: #uncomment to use ArcObjects ARCOBJECTS_ ...
- Python3学习之路~8.6 开发一个支持多用户在线的FTP程序-代码实现
作业: 开发一个支持多用户在线的FTP程序 要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp s ...
随机推荐
- C# 内存管理(一)
引用地址:https://blog.csdn.net/libohuiyuan/article/details/81030010 一.变量类型 C#的变量类型分为值类型,引用类型.指针类型和指令类型.所 ...
- Jmeter Question 之“集成Ant+Jenkins自动化”
首先介绍一下Ant.Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.由Apache软件基金会所提供. 是的.还是Apache家 ...
- ACM-单向链表插入排序算法(在原链表上操作)
/* 1.若链表只有一个节点或者为空,直接返回 2.将链表的前两个节点排序,并将排序之后的第二个节点的下一个节点赋空 3.此时整个链表分为了两个,将未排序的节点一一插入到已排序链表中: 3.1.第 ...
- 网络服务—VSFTP
VSFTP连接类型 控制连接(持续连接)--> TCP21(命令信道)--> 用户收发FTP命令 数据连接(按需连接)-->TCP20(数据信道)--> 用于上传下载数据 ...
- C++ int 和string互相转化
1.int转换成string );//"-12" );//"12" +);//"1" 2.string转换成int );//"-1 ...
- 检索式chatbot:
小夕从7月份开始收到第一场面试邀请,到9月初基本结束了校招(面够了面够了T_T),深深的意识到今年的对话系统/chatbot方向是真的超级火呀.从微软主打情感计算的小冰,到百度主打智能家庭(与车联网? ...
- Django2.2报错 AttributeError: 'str' object has no attribute 'decode'
准备将 Django 连接到 MySQL,在命令行输入命令 python manage.py makemigrations 后报错: AttributeError: 'str' object has ...
- Git& GitHub常用的操作
Git是目前世界上最先进的分布式版本控制系统. 创始人:Linus Torvalds林纳斯·托瓦兹 经典的集中管理型(CVS.VSS.SVN) 版本管理系统: 1.版本管理的服务器一旦崩溃,硬盘损坏, ...
- ASP.NET开发实战——(八)ASP.NET MVC 与数据库之MySQL
之前介绍了My Blog如何使用ADO.NET来访问SQL Server获取数据.本章将介绍如何使用My SQL来完成数据管理. 在使用My SQL之前需确保开发环境中安装了My SQL数据库和Con ...
- Hystrix 超时配置的N种玩法
前阵子在我的知识星球中,有位朋友对我提了个问题,问我如何让Hystrix支持对接口级别的超时配置,今天给大家写篇文章,普及下Hystrix配置超时的几种方式. 至于以后你是用阿里的Sentinel还是 ...