使用docker部署django的详细步骤

目录
  • docker概念
  • docker容器对比虚拟机
  • docker镜像、容器和仓库
  • docker安装
  • docker使用
  • 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后只需要简单地拉取镜像创建容器,两行命令解决所有烦恼。

(0)

相关推荐

  • Docker 部署Django项目的方法示例

    使用docker部署django项目也很简单,挺不错,分享下 环境 默认你已安装好docker环境 django项目大概结构 (p3s) [root@opsweb]# tree opsweb opsweb ├── apps ├── logs ├── manage.py ├── media ├── opsweb ├── README.md ├── requirements.txt └── static 编写Dockerfile 这里指定 Python 版本为docker官方提供的 "0.0.0.0

  • 使用docker部署django技术栈项目的方法步骤

    随着Docker的普及成熟,已经逐渐成为部署项目的首选,今天来和大家分享下如何使用docker部署django技术栈项目. 我们这里说的Django技术栈为:python3.6.Django2.2.redis.mysql.celery.gunicorn和nginx.在实际的生产项目中,这些组件分布在集群的不同机器,如Nginx.redis和Mysql可能会有单独的团队或部门负责.涉及的部署架构和容器的编排会更为复杂,本文暂不去深究.本文主要介绍,如何使用 docker-compose 来编排这些

  • Docker部署Django+Mysql+Redis+Gunicorn+Nginx的实现

    一. 前言 docker技术现在非常火热,通过容器构建项目环境,运行效率和部署效率都很不错.所以最近抽空看了一些教程,然后将博客部署方式改为了docker,感觉网上没有特别好的关于 docker 部署 django 项目的教程,特意写了这篇文章,算是记录自己的心得. 本次教程的测试环境为 Deepin ,主要侧重于 容器的编排 和 Django 相关部署知识,一些细节方面,例如环境依赖安装,不会讲得特别详细.由于是在本地测试,所以在配置 nginx 相关信息时,将配置 http 代理而非 htt

  • Docker部署Django应用的示例

    之前部署Web应用,没用docker,直接在服务器上部署,使用了fabric+nginx+supervisor+gunicorn部署,可查看我写过的一片博客:部署Web应用.但后来了解了docker,为其"Build,Ship and Run Any App,Anywhere"的思想所折服,觉得这个太牛逼了,所以我也尝试一下自己用docker部署Web应用.本篇文章为了记录我用docker部署web应用的过程和心得. 一.网络架构 我用Visio大概画了一下我的网络架构图: 我构建的容

  • 使用Docker搭建Django,Nginx,R,Python部署环境的方法

    本文介绍了使用Docker搭建Django,Nginx,R,Python部署环境的方法,分享给大家,具体如下: 基本环境: Ubuntu 16.10 docker 17.06.0-ce 压缩自己的项目文件 1.这里需要注意的是,在压缩的时候,也需要把自己的需要的Python包写在requirement.txt,这样搭建环境的时候才会知道你需要什么包,才能一起安装,我的项目的requirement.txt 内容如下. Django==1.10.5 rpy2==2.8.5 PyMySQL==0.7.

  • 使用docker部署django的详细步骤

    目录 docker概念 docker容器对比虚拟机 docker镜像.容器和仓库 docker安装 docker使用 docker常见命令 单容器部署最基本的django 小结 docker概念 docker是一种容器技术,用来创造独立的软件容器,属于操作系统的虚拟化技术,隔离的进程独立于宿主和其他隔离的进程. docker容器对比虚拟机 虚拟机:需要有必要的二进制库和完整的操作系统,并且占据所有预分配的资源. docker容器:与宿主共享操作系统,可以实现资源的动态分配,在用户空间以分离的进程

  • 基于docker 部署canvas-lms的详细步骤

    准备: 一台8G内存的服务器.安装好docker, pull一个ubuntu镜像下来, 可以是最新版也可以是官方支持的14/ 16 更新时间: 2018-04-04 Step 1: 启动docker然后加载ubuntu镜像.命令如下: sudo docker run -it ubuntu # -it 是链接输入输出, 后面有一个command参数, 默认为/bin/bash Step 2: 安装vim, sudo (ubuntu镜像可能会非常精简, 没有sudo, 没有vim等文本编辑器) ap

  • Docker部署portainer的详细步骤

    portainer Portainer是Docker的图形化管理工具,由GO语言编写的,提供状态显示.应用模板快速部署.对于Docker(容器.镜像.网络.数据卷)的基本操作.日志显示.容器控制台等功能. 部署 docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer 描述 portainer主要用来管理docker容器,方便了解容器状态

  • centos8使用Docker部署Django项目的详细教程

    引言 在本文中将介绍在Docker中通过django + uwsgi + nginx部署方式部署Django项目, 由于记录的是学习过程,使用的都是目前较高的版本. python  版本为3.8.3 django  版本为3.0.6 nginx   版本为1.17.10 好了简单的介绍之后,就进入正题了. 创建一个工作目录 创建一个工作目录用来存放项目,和Dockerfile等文件. mkdir uwsgidocker 简单说明一下各个文件 docker-compose.yml: Docker

  • Docker容器部署consul的详细步骤

    目录 Consul简介 Consul 使用场景 -consul部署- 容器服务自动加入consul集群 安装Gliderlabs/Registrator Gliderlabs/Registrator 测试服务发现功能是否正常 安装consul-template 安装nginx 配置并启动template Consul简介 Consul 是一个支持多数据中心分布式高可用的 服务发现 和 配置共享 的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public Li

  • 详解如何使用Docker部署Django+MySQL8开发环境

    前一段时间重装了系统,然后我还没有备份,导致电脑里的开发环境全都没有了. 一想到又要装 Python 环境,还要装数据库,然后安装过程中还可能报一堆错就头疼. 最近正在学习 Docker,这不正好解决了我当前的痛点了吗?而且,不止这次重装系统,以后再重装都不怕了,只要拿着 Dockerfile 和 docker-compose 文件,不管到什么环境,一条命令轻松跑起来. 之前部署 Python 开发环境,都是用的 virtualenv,或者是 Pipenv.这次使用 Docker 之后,对比下来

  • docker部署confluence的完整步骤

    Confluence 是收费的,但是可以破解使用(提倡购买,支持正版) 本文使用的镜像是基于他人(镜像&破解)打包的,本文的镜像是直接将破解文件置入容器了,省去了自己去捣鼓破解的 jar 包文件的过程,容器部署启动后即可访问. 整个过程请按照以下步骤进行: 1. 数据库创建 先创建文件 /opt/soft/mysql8-confluence/conf.d/custom.cnf,内容为: [mysqld] default-authentication-plugin=mysql_native_pas

  • 使用Docker部署MySQL的实现步骤

    目录 1.拉取mysql 2.启动容器镜像 3.登录容器 4.登录mysql 在 [Docker] 下部署,使用命令行进行拉取. 1.拉取mysql 最新版本mysql: docker pull mysql:latest 拉取5.7版本mysql: docker pull mysql:5.7 2.启动容器镜像 docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql -v $PWD/data:/var/lib/mysql -

随机推荐