# 第一条指令必须为FROM指令,如果在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令
FROM python:3.7.2
# 如果有Dockerfile基于当前镜像,则会自动执行ONBUILD指令内容,等价于在后边添加了两条指令
ONBUILD ADD . /app/src
# 开发者信息
MAINTAINER Jamie <ren@126.com>
# 在容器内创建文件夹,RUN指令将对镜像执行跟随的命令,每运行一条RUN指令,镜像添加新的一层,并提交。命令较长时,可以使用 \ 来换行
# RUN 格式为 RUN <command> 或者 RUN ["executable", "param1", "param2"]
# 前者将在shell终端中运行命令,即 /bin/sh -c; 后者则使用exec执行
# 指定使用其他终端可通过第二种方式实现,例如 RUN ["/bin/bash", "-c", "echo hello"]
RUN mkdir -p /var/www/html/docker_django
# 暴露端口号
export 8080
# 指定一个环境变量,会被后续RUN指令使用,并在容器运行时保持
ENV ENV VERSION=1.0 DEBUG=on \
NAME="Happy Feet"
# 设置容器内的工作目录,为后续的 RUN CMD ENTRYPOINT 指令配置工作目录
# 可以使用多个 WORKDIR 指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径
WORKDIR /var/www/html/docker_django
WORKDIR docker_django
> 最终路径为 /var/www/html/docker_django/docker_django
# 将当前目录内的文件拷贝的容器的工作目录中,<src> 可以是一个相对路径,可以是一个URL,还可以是个tar文件(自动解压为目录)
ADD . /var/www/html/docker_django
# 复制本地主机的<src>(为Dockerfile所在目录的相对路径)到容器中,党使用本地目录为源目录时,推荐使用COPY
COPY . /var/www/html/docker_django
# 更新pip版本 和 安装依赖
RUN pip install -r requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 设置start.sh文件的可执行权限
RUN chmod +x ./start.sh
# 启动服务时的操作命令
CMD python manage.py runserver 0.0.0.0:8080
# 配置容器启动后执行的命令,并且不可被docker run提供的参数覆盖
# 与CMD的区别:
ENTRYPOINT python manage.py runserver 0.0.0.0:8080