使用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端口
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文件夹中我们可以看见整个项目结构
此时我需要在项目根目录下创建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
查看镜像,可以看见刚刚创建的镜像
在Dockerfile
中第一行是from python:3.7
,也就是在创建过程中会从docker仓库中拉取python:3.7
的镜像,速度过慢的话请修改你的docker镜像源,可以直接在docker界面处修改,https://b2bk1nge.mirror.aliyuncs.com
输入命令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
中的依赖
最后在容器的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项目
小结
本篇文章主要是尝试性的使用docker来部署项目,学习过程中也是踩了一些坑,目前来看使用docker安装镜像很方便,之前在安装需要的软件时,往往会遇上各种各样的小bug,而使用docker后只需要简单地拉取镜像创建容器,两行命令解决所有烦恼。
原文出处:https://blog.csdn.net/qq_43606857/article/details/123900218
相关文章
- 这篇文章主要介绍了zabbix v3.0安装部署全过程,文中通过一步步的步骤和图文介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。...2021-05-07
Django def clean()函数对表单中的数据进行验证操作
这篇文章主要介绍了Django def clean()函数对表单中的数据进行验证操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-09- 以下就是部署PHP时的4个配置修改说明,大家一个一个进行学习研究。1、short_open_tag 是什么呢? 决定是否允许使用代码开始标志的缩写形式(<? ?> )。如果要和 XML 结合使用PHP,可以禁用此选项以便于嵌入使用<?x...2015-10-21
docker 启动elasticsearch镜像,挂载目录后报错的解决
这篇文章主要介绍了docker 启动 elasticsearch镜像,挂载目录后报错的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-20- 这篇文章主要介绍了教你如何用Jenkins自动化部署项目(从零到搭建完成),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-08
解决Docker中的error during connect异常情况
这篇文章主要介绍了解决Docker中的error during connect异常情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-22Jenkins+tomcat自动发布的热部署/重启及遇到的问题解决办法(推荐)
这篇文章主要介绍了Jenkins+tomcat自动发布的热部署/重启及遇到的问题解决办法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-10教你使用Portainer管理多台Docker容器环境的方法
这篇文章主要介绍了Portainer管理多台Docker容器环境,本文给大家介绍的非常详细,包括环境准备及管理docker的详细过程,需要的朋友可以参考下...2021-11-11- 这篇文章主要介绍了docker部署confluence的完整步骤,这里的镜像并不是小编自己写的是基于他人打包的文中有详细介绍,需要的朋友可以参考下...2021-06-11
- 这篇文章主要介绍了docker swarm外部验证负载均衡时不生效的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-27
- 这篇文章主要介绍了解决docker挂载的目录无法读写问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-19
- 周一今天给大家分享shell脚本多实例部署nginx的详细教程,文章通过实例代码脚本给大家详细介绍,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...2021-10-26
- 这篇文章主要介绍了docker端口映射及外部无法访问问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-19
使用Maven 搭建 Spring MVC 本地部署Tomcat的详细教程
这篇文章主要介绍了使用Maven 搭建 Spring MVC 本地部署Tomcat,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-08-16Docker 解决openjdk容器里无法使用JDK的jmap等命令问题
这篇文章主要介绍了Docker 解决openjdk容器里无法使用JDK的jmap等命令问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-04- 这篇文章主要介绍了Tomcat首次部署web项目流程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-12-11
- 这篇文章主要介绍了一条命令重启所有已停止的docker容器操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-20
- 这篇文章主要介绍了在Django中使用MQTT的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-10
使用rpm安装指定版本docker(1.12.6)的详细步骤
为了防止安装高版本的docker引发的错误,需要安装1.12.6版本的docker,下面小编给大家带来了使用rpm安装指定版本的docker(1.12.6)的步骤,感兴趣的朋友一起看看吧...2021-08-11idea配置springboot热部署终极解决办法(解决热部署失效问题)
这篇文章主要介绍了idea配置springboot热部署终极解决办法(解决热部署失效问题),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...2020-07-22