欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > Dockerfile详情,Django项目中使用Dockerfile

Dockerfile详情,Django项目中使用Dockerfile

2024/10/26 1:19:46 来源:https://blog.csdn.net/AZURE060606/article/details/140033141  浏览:    关键词:Dockerfile详情,Django项目中使用Dockerfile

Dockerfile详情,Django项目中使用Dockerfile

目录

  • Dockerfile详情,Django项目中使用Dockerfile
    • 介绍
    • 常用指令
    • Dokcerfile部署Django项目
      • 安装Docker
      • 获取项目源码
      • Dockerfile文件
      • 构建Docker镜像
      • 运行Docker容器

介绍

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下载

git clone......

Dockerfile文件

# 使用官方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镜像

docker build -t my_project .

运行Docker容器

构建完成后,运行以下命令启动容器

docker run -d -p 80:8000 --name Demo01 my_project
  • -p:将宿主机的80端口映射到容器的8000端口

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com