Dockerfile详情,Django项目中使用Dockerfile
目录
介绍
Dockerfile是一个文本文件,一般位于项目根目录中,文件名必须为Dockerfile,Docker会根据Dockerfile文件生成新的自定义镜像
常用指令
参数 | 描述 | 示例 |
---|---|---|
FROM |
指定基础镜像,每个 Dockerfile 必须以该指令开始 | FROM python:3.10 |
WORKDIR |
设置工作目录,在构建镜像时,所有后续指令都在这个目录下执行 | WORKDIR /app |
COPY |
将文件或目录从本地文件系统复制到镜像中 | COPY . /app |
ADD |
类似于 COPY ,但可以处理 URL 和 tar 文件 |
ADD https://example.com/file.tar.gz /app |
RUN |
在镜像中执行命令,通常用于安装软件包 | pip install --no-cache-dir -r requirements.txt |
CMD |
指定容器启动时要执行的命令,可以有多个,但只有最后一个生效 | CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] |
ENTRYPOINT |
设置容器启动时要执行的主命令,通常和 CMD 配合使用,用于传递参数 |
ENTRYPOINT ["python"] CMD ["app.py"] |
ENV |
设置环境变量 | ENV APP_HOME /app |
EXPOSE |
声明容器会监听的端口,但不会实际打开端口,用于文档和互联 | EXPOSE 8080 |
VOLUME |
创建挂载点,用于持久化数据或共享数据,和-v 一样 |
VOLUME ["/data"] |
USER |
指定运行容器时使用的用户 | USER appuser |
ARG |
定义在构建时传递的变量,可以在 RUN 指令中使用 |
ARG version=1.0 RUN echo $version |
LABEL |
添加元数据到镜像,例如维护者信息、版本号等 | LABEL maintainer="example@example.com" |
ONBUILD |
设置触发指令,用于延迟执行直到子镜像中使用 | ONBUILD RUN echo "Hello from ONBUILD" |
STOPSIGNAL |
设置发送到容器以停止它的系统调用信号 | STOPSIGNAL SIGKILL |
HEALTHCHECK |
指定容器的健康检查命令 | `HEALTHCHECK --interval=30s CMD curl -f http://localhost |
SHELL |
允许在 Dockerfile 中切换到不同的 shell 环境 | SHELL ["powershell", "-Command"] |
Dokcerfile部署Django项目
安装Docker
获取项目源码
可以远程部署,也可以git下载
bash
git clone......
Dockerfile文件
python
# 使用官方Python镜像作为基础镜像
FROM python:3.10
# 设置工作目录
WORKDIR /app
# 将当前目录下的代码复制到容器的/app目录下
COPY . /app
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 暴露端口
EXPOSE 8000
# 运行Django应用
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
构建Docker镜像
bash
docker build -t my_project .
运行Docker容器
构建完成后,运行以下命令启动容器
bash
docker run -d -p 80:8000 --name Demo01 my_project
-p
:将宿主机的80端口映射到容器的8000端口