Dockerfile详情,Django项目中使用Dockerfile

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端口
相关推荐
JackieZhengChina15 分钟前
Spring Boot + MinIO 实现文件切片极速上传技术
spring boot·后端·php·minio
大江东去浪淘尽千古风流人物39 分钟前
【Python】第三方库的功能简介
开发语言·python
坐忘3GQ43 分钟前
65.Python-web框架-Django-免费模板django-datta-able的admin_datta
后端·python·django·templates·datta able·admin_datta
吹吹晚风-44 分钟前
深入Django(四)
数据库·django·sqlite
HZ3557244 分钟前
智谱AI: ChatGLM API的使用
python·自然语言处理
PhoenixAI81 小时前
AI绘画-Stable Diffusion 原理介绍及使用
人工智能·python·机器学习·ai作画·stable diffusion
2301_796982141 小时前
pycharm中新建的临时python文件存放在哪里?
ide·python·pycharm
U盘失踪了1 小时前
Django 多对多关系
python·django
LightOfNight1 小时前
【后端面试题】【中间件】【NoSQL】ElasticSearch的优化方案1(分页查询、刷新间隔、批量提交)
数据库·redis·后端·elasticsearch·缓存·中间件·nosql
eclipsercp1 小时前
《每天5分钟用Flask搭建一个管理系统》 第7章:用户认证
后端·python·flask