使用docker部署django

编程之家收集整理的这篇文章主要介绍了使用docker部署django编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

docker概念docker是一种容器技术,用来创造独立的软件容器,属于操作系统的虚拟化技术,隔离的进程独立于宿主和其他隔离的进程。docker容器对比虚拟机虚拟机:需要有必要的二进制库和完整的操作系统,并且占据所有预分配的资源。docker容器:与宿主共享操作系统,可以实现资源的动态分配,在用户空间以分离的进程运行docker镜像、容器和仓库镜像是文件,容器是进程;他们之间的关系像是类和实例化对象的关系,一个类可以有多个实例化对象。而仓库是一个其中的存储、分发镜像的服务。docker pull,下方主要介绍关于使用docker部署django的全文内容,希望对你有所帮助。

docker概念

docker是一种容器技术,用来创造独立的软件容器,属于操作系统的虚拟化技术,隔离的进程独立于宿主和其他隔离的进程。

docker容器对比虚拟机

虚拟机:需要有必要的二进制库和完整的操作系统,并且占据所有预分配的资源。

docker容器:与宿主共享操作系统,可以实现资源的动态分配,在用户空间以分离的进程运行

docker镜像、容器和仓库

镜像是文件,容器是进程;他们之间的关系像是类和实例化对象的关系,一个类可以有多个实例化对象。而仓库是一个其中的存储、分发镜像的服务。docker pull是从仓库下载docker镜像到本地docker run创建一个容器并运行一个命令,docker exec -it是在运行的容器中执行命令

docker安装

根据自己的系统选择安装方式docker安装

docker使用

  1. 简单尝试:使用docker pull Nginx:latest下载一个最新的Nginx镜像。

  2. 使用命令docker run --name my-Nginx -p 80:80 -d Nginx:latest创建一个容器,命令为my-Nginx-d表示后台运行并返回容器的ID-p将端口指定到宿主的80端口。打开浏览器访问80端口

    image-20220330194222445

  3. 使用命令docker exec -it my-Nginx bash开启一个交互模式终端

    其中第一步不是必须,在执行docker run命令时找不到镜像时会自动从仓库拉取

docker常见命令
命令 作用
docker pull 从仓库下载镜像
docker images 查看所有本地镜像
docker rmi 删除镜像
docker run 创建容器并执行命令
docker rm 删除容器
docker stop 停止容器,同理还有restart、start
docker logs 查看容器日志
docker exec bash 进入容器中执行其他命令

单容器部署最基本的django

尝试部署最基本的django项目

创建django项目
  1. 命令行输入django-admin startproject mysite,进入创建的django文件夹中我们可以看见整个项目结构

    image-20220401145201527

  2. 此时我需要在项目根目录创建Dockerfile文件,该文件用于生成docker镜像,内容如下

    # 建立 python3.7 环境
    FROM python:3.7
    
    # 镜像作者
    MAINTAINER LALALA
    
    # 设置 python 环境变量
    ENV PYTHONUNBUFFERED 1
    
    # 设置pip源为国内源
    copY pip.conf /root/.pip/pip.conf
    
    # 在容器内创建mysite文件夹
    RUN mkdir -p /var/www/HTML/mysite
    
    # 设置容器内工作目录
    workdir /var/www/HTML/mysite
    
    # 将当前目录文件加入到容器工作目录中(. 表示当前宿主机目录)
    ADD . /var/www/HTML/mysite
    
    # pip安装依赖
    RUN pip install -r requirements.txt
    
  3. 继续在项目根目录创建pip.conf文件,用于修改pip镜像源

    [global] 
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
    [install]
    trusted-host=mirrors.aliyun.com
    
  4. 最后创建requirements.txt文件,因为只需要django,只需要安装django即可

    Django==3.2.12
    
  5. 项目内容设置完后,在项目根目录输入命令docker build -t django_docker_img:v1 .创建镜像,使用命令docker images查看镜像,可以看见刚刚创建的镜像

    image-20220401150724834

    Dockerfile中第一行是from python:3.7,也就是在创建过程中会从docker仓库中拉取python:3.7的镜像,速度过慢的话请修改你的docker镜像源,可以直接在docker界面处修改https://b2bk1nge.mirror.aliyuncs.com

    image-20220401151437077

  6. 输入命令docker run -it -d -p 80:8000 --name mysite django_docker_img:v1创建并运行容器,此命名将该容器映射到本地80端口,使用docker ps查看运行情况。然后使用命令docker exec -it mysite bash进入容器内部,会发现此刻处于Dockerfile设置工作目录,该目录内容即为项目文件内容,pip已安装requirement.txt中的依赖

    image-20220401153656137

  7. 最后在容器的bash中执行下面命令,完成数据库迁移和运行django项目

    python manage.py makemigrations
    python manage.py migrate
    python manage.py runserver 0.0.0.0:8000 # 务必写0.0.0.0,如果是127.0.0.1是容器的环回地址,会导致在宿主机中无法访问
    
  8. 此时在浏览器中访问http://127.0.0.1/可以看到运行的django项目

    image-20220401154245955

小结

本篇文章主要是尝试性的使用docker来部署项目,学习过程中也是踩了一些坑,目前来看使用docker安装镜像很方便,之前在安装需要的软件时,往往会遇上各种各样的小BUG,而使用docker后只需要简单地拉取镜像创建容器,两行命令解决所有烦恼。

总结

以上是编程之家为你收集整理的使用docker部署django全部内容,希望文章能够帮你解决使用docker部署django所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

Django文章

docker概念docker是一种容器技术,用来创造独立的软件容器,属于操作系统的虚拟化技术,隔离的进程独立于宿主和其他隔离的进程。docker容器对比虚拟机虚拟机:需要有必要的二进制库和完整的操作系统,并且占据所有预分配的资源。docker容器:与宿主共享操作系统,可以实现资源的动态分配,在用户空间以分离的进程运行docker镜像、容器和仓库镜像是文件,容器是进程;他们之间的关系像是类和实例化对象的关系,一个类可以有多个实例化对象。而仓库是一个其中的存储、分发镜像的服务。docker pull
Python Web开发(三):HTTP请求的url路由。如何用HTTP去请求url路由呐,我来告诉你!
我们一起开发在线中文字符识别系统实训以了解Django REST项目,体会前后端分离开发的思想并掌握基本开发流程。
如果你的django项目出现了此问题,并且搜寻了大量的博客寻求解决并仔细检查过自己的虚拟环境、系统环境之后确定安装了django,却还是出现此问题,那么请往下看:问题描述搜了很多博客都说是虚拟环境的问题,百般确认之后确实安装了django并且存在于环境当中,但执行python manage.py startapp myweb后还是出现以下错误:File "manage.py", line 22, in <module> main() File "manage.py", ...
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代.
Python属于动态类型的语言,而动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时创建的,而是运行时动态创建的。
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注