alpine容器一直是使用得比较多的,而且也是官方推荐使用的。但是官方的容器会有一些不方便的地方,比如安装软件, 时区不同等. 所以本文旨在完成一个alpine容器通用模板作为记录
导入的时候一定要指明版本, 不推荐使用 latest
FROM python:3.5-alpine3.8
修改镜像源地址为阿里云
RUN echo "http://mirrors.aliyun.com/alpine/v3.8/main" > /etc/apk/repositories \
安装时区软件, 如果有自定义软件, 继续在后面添加
&& apk add --no-cache tzdata \
设置默认时区
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
通过阿里云的源安装python第三方库, 此处使用 flask 举例
&& pip3 install \
--index-url http://mirrors.aliyun.com/pypi/simple \
--trusted-host mirrors.aliyun.com \
--no-cache-dir \
flask==1.0.2 \
清理运行时不需要的软件和安装缓存
&& apk del tzdata \
&& rm -rf /var/cache/apk/* \
&& rm -rf /root/.cache \
&& rm -rf /tmp/*
指明工作目录
WORKDIR /
CMD ["/bin/sh"]
完整文件如下:
FROM python:3.5-alpine3.8
LABEL author example@mail.com
RUN echo "http://mirrors.aliyun.com/alpine/v3.8/main" > /etc/apk/repositories \
&& apk add --no-cache tzdata \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& pip3 install \
--index-url http://mirrors.aliyun.com/pypi/simple \
--trusted-host mirrors.aliyun.com \
--no-cache-dir \
flask==1.0.2 \
&& apk del tzdata \
&& rm -rf /var/cache/apk/* \
&& rm -rf /root/.cache \
&& rm -rf /tmp/*
WORKDIR /
CMD ["/bin/sh"]
如果docker的镜像名称里面包含了“-”,那么dockerfile每次都会从远程拉取镜像。
dockerfile按理来说只需一次拉取远程镜像就好了,之后每次都是使用第一次拉取的远程镜像。
但是实际上出现的问题是:dockerfile每次都从远程拉取镜像,浪费了资源和时间。