一、先来看一个简单的 Dockerfile
#这个Dockerfile作用是打一个python3项目环境
FROM python:3-alpine
WORKDIR /app
ADD . /app
RUN pip3 install -r requirements.txt -i https://pypi.douban.com/simple
CMD ["python3", "main.py"]
#这个Dockerfile作用Dockerfile部署django项目
FROM centos:7
MAINTAINER annlin
ADD requeriments.txt /home
WORKDIR /home
RUN yum update && yum -y install mysql && yum -y install python3-pip && pip3 install -r requirements.txt
ADD autoTest /home/ WORKDIR /home/autoTest
EXPOSE 8000
ENTRYPOINT uwsgi --ini uwsgi.ini
二、Dockerfile 编写规则
- 指令大小写不敏感,为了区分习惯上用大写
- Dockerfile 非注释行第一行必须是 FROM
- 文件名必须是 Dockerfile
- Dockerfile 指定一个专门的目录为工作空间
- 所有引入映射的文件必须在这个工作空间目录下
- Dockerfile 工作空间目录下支持隐藏文件(.dockeringore)
- (.dockeringore)作用是用于存放不需要打包导入镜像的文件,根目录就是工作空间目录
- 每一条指令都会生成一个镜像层,镜像层多了执行效率就慢,能写成一条指定的就写成一条
三、Dockerfile 指令详解
1、FROM:基础镜像
1.1、FROM是Dockerfile文件开篇第一个非注释行代码
1.2、用于为镜像文件构建过程指定基础镜像,后续的指令都基于该基础镜像环境运行
1.3、基础镜像可以是任何一个镜像文件
1.4、docker build 会在docker宿主机上查找指定的文件,如未找到会自动去Docker Hub Registry上拉取
1.5、如果没找到对应的镜像就会返回错误信息
2、MAINTAINER:镜像作者信息
2.1、废弃了,使用LABLE替代
3、LABLE:镜像描述信息
3.1、LABLE author="annlin"
4、COPY:从 Docker 宿主机复制文件至创建的新镜像文件
4.1、COPY <src> <dest>
4.2、COPY ["<src>",.... "<dest>"]
4.3、<src>:要复制的源文件或目录,支持使用通配符
?????1、<src>必须是build上下文中的路径,不能是其父目录路径
?????2、如果<src>是目录,则其内部文件和子目录都会被递归复制,但是<src>目录本身不
????????会被复制
?????3、如果指定了多个<src>,或者<s