使用docker部署django的详细步骤

 更新时间:2022年08月21日 09:21:19   作者:流离幻影  
当用Django框架开发的网站项目完成后上线的话可以用物理主机、虚拟机来部署,也可以容器,下面这篇文章主要给大家介绍了关于使用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项目

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

image-20220401145201527

此时我需要在项目根目录下创建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

继续在项目根目录下创建pip.conf文件,用于修改pip镜像源

[global] 
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com

最后创建requirements.txt文件,因为只需要django,只需要安装django即可

Django==3.2.12

项目内容设置完后,在项目根目录输入命令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

输入命令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

最后在容器的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是容器的环回地址,会导致在宿主机中无法访问

此时在浏览器中访问http://127.0.0.1/可以看到运行的django项目

image-20220401154245955

小结

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

相关文章

  • docker centos7 安装ssh具体步骤

    docker centos7 安装ssh具体步骤

    这篇文章主要介绍了 docker centos7 安装ssh相关资料,这里提供了详细的具体安装步骤,需要的朋友可以参考下
    2016-11-11
  • docker打包vue和vite前端项目

    docker打包vue和vite前端项目

    本文主要介绍了docker打包vue和vite前端项目,通过Docker镜像可以快速构建开发环境,统一依赖和配置,提高开发效率,具有一定的参考价值,感兴趣的可以了解下
    2023-08-08
  • 使用Docker compose启动自定义jar包的步骤详解

    使用Docker compose启动自定义jar包的步骤详解

    这篇文章主要介绍了使用Docker compose启动自定义jar包的步骤,首先我们需要编写一个docker-compose.yml文件来定义我们的服务传到我们的云服务器上,本文给大家分享示例代码,感兴趣的朋友一起看看吧
    2024-03-03
  • jenkins构建Docker 镜像实例详解

    jenkins构建Docker 镜像实例详解

    这篇文章主要介绍了 jenkins构建Docker 镜像实例详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • 关于构建aarch64环境Mysql8.0的Docker镜像问题

    关于构建aarch64环境Mysql8.0的Docker镜像问题

    这篇文章主要介绍了构建aarch64环境Mysql8.0的Docker镜像,需要的朋友可以参考下
    2022-04-04
  • docker安装mysql完美教程(建议收藏!)

    docker安装mysql完美教程(建议收藏!)

    最近使用docker,故将数据库和程序都用docker来一遍,下面这篇文章主要给大家介绍了关于docker安装mysql完美教程的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • Docker安装Oracle_11g的方法

    Docker安装Oracle_11g的方法

    这篇文章主要介绍了Docker安装Oracle_11g的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • docker镜像拉取速度过慢的解决方案

    docker镜像拉取速度过慢的解决方案

    这篇文章主要介绍了docker镜像拉取速度过慢的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Docker容器内存限制的方法

    Docker容器内存限制的方法

    本篇文章主要介绍了Docker容器内存限制的方法,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • FastAPI 部署在Docker的详细过程

    FastAPI 部署在Docker的详细过程

    这篇文章主要介绍了FastAPI 部署在 Docker的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10

最新评论