编译一个支持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镜像。

上一篇:UVA LIVE 7146 Defeat the Enemy


下一篇:自动测试工具(Jmeter,qtp等)