Docker是一种强大的DevOps工具,使用其无论是作为开发环境还是生产环境,但是非常
好的选择;在这篇文章中,讲讲Docker的几个开发Tips。
几条命令安装Docker
$ curl -fsSL get.docker.com -o get-docker.sh $ sudo sh get-docker.sh
使用多个基础镜像
作为Python开发者,经常需要使用pip来构建安装包,等待pip安全的过程可谓是又臭又长,
而且一个不小心,如果在没有使用pip.conf的情况下,安装失败,docker又要重新跑一次,
十分的麻烦。下面给出的解决方案不一定是最好的,但是应该是比较有效的。
比如,我在构建某个Python项目的时候,会创建一个python-base的image,tag使用当前
项目名称。
这个python-base就是基础镜像之一:
FROM dockerxman/docker-ubuntu:latest MAINTAINER Svtter <[email protected]> RUN apt-get update\ && apt-get install python3-pip supervisor -y COPY ./requirements.txt /app/requirements.txt COPY ./pip/pip.conf /root/.pip/pip.conf RUN pip3 install -r /app/requirements.txt RUN rm -rf /var/lib/apt/lists/*
介绍一下这个Dockerfile
;在第一行,我使用的是一aliyun源的ubuntu镜像,来加速
apt的过程,然后,把pip相关的配置复制到image中,最后,使用pip安装需求文件,
清理缓存,然后这个基础镜像就构建好了。
创建自己的项目
FROM python-base:school MAINTAINER Svtter <[email protected]> COPY ./fleetness /app WORKDIR /app COPY supervisord.conf /etc/supervisord.conf WORKDIR /log CMD supervisord -c /etc/supervisord.conf STOPSIGNAL SIGINT EXPOSE 5000
此处就是这直接利用已经构建好的python-base:school
的镜像,这样一来,每次我更新
代码,或者supervisor的配置,只需要重新构建这个镜像就可以了。在这个镜像中,没有
安装其他软件包的过程,因此节省了大量的时间。
此外,如果只需要更新代码,而依赖相对不改变的时候,可以通过挂载代码到VOLUME中,
每次更新代码,都通过git pull
,然后重启一下镜像,就可以重新部署了。
Docker 构建Python镜像的一些技巧
使用pip快速 http://blog.csdn.net/lambert310/article/details/52412059
一条命令搭建LAMP
这条命令创建一个apache-php服务器,服务于8087
端口。
$ docker run --rm -p 8087:80 -e ALLOW_OVERRIDE=true -v ${项目的绝对路径}:/var/www/html tutum/apache-php