欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker系列笔记 之使用 Docker 运行 Django 容器

程序员文章站 2024-01-27 15:43:10
...

首先此篇笔记默认你已经安装好了 Docker,并了解 Docker 的基础概念,诸如镜像、容器、以及他们之间的关系等。

如果不太了解,等我回头了解清楚以后,可以再写一篇文章阐述一下。(狗头

当然,对于这篇文章,你就算不是很了解相关概念也没关系,照着我的步骤先敲一遍代码,然后慢慢理解也可以。

本文的内容大致如下几步:

  1. 镜像准备
  2. Django 文件准备
  3. Dockerfile 文件准备
  4. build 构建一个容器
  5. run 运行该容器
  6. 测试与查看

1、镜像准备

这里用的是 Python 3.6 版本的镜像,通过如下命令下载:

docker pull python:3.6

信息显示完成以后,通过如下命令确认已经下载的所有镜像:

docker image ls

大概如下图所示:
Docker系列笔记 之使用 Docker 运行 Django 容器
至此,我们的镜像就准备完了。

2、Django 文件准备

我的测试文件目录在 /home/hunter/docker/ 目录下。
在该目录下开启一个新的 Django 项目:

django-admin startproject Web

编辑 settings.py 文件,将 ALLOWDD_HOSTS 设置为允许所有 ip 访问。

ALLOWED_HOSTS = ['*']

/home/hunter/docker/Web/ 目录下创建一个 requirements.txt 文件,写入如下内容:

#requirements.txt
Django==3.0.3

至此, Django 相关文件创建完毕。

3、Dockerfile 文件准备

Dockerfile 的文件内容如下:

FROM python:3.6
RUN mkdir /usr/src/myapp -p
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
RUN pip install -r requirements.txt -i  https://mirrors.aliyun.com/pypi/simple/
WORKDIR /usr/src/myapp/Web
CMD python manage.py runserver 0:7979

FROM python:3.6 这条命令表明是使用 python:3.6 这个版本的 Python 镜像,其实所谓的 Python 镜像,其实也就是一个只装了 Python 3.6 版本的 Linux 操作系统,这个后面我们可以进入系统看一下。

RUN mkdir /usr/src/myapp -p 这条命令表示的是在该镜像里递归地创建这样一个文件夹, RUN 表示执行什么命令,后面的 mkdir 等命令和 Linux 操作系统都是一致的。

COPY . /usr/src/myappCOPY 是复制命令, . 表示你所在的操作系统(非镜像操作系统)当前目录,这条语句的意思是把当前文件夹的所有内容都拷贝到镜像系统的 /usr/src/myapp 目录下。

WORKDIR /usr/src/myapp: WORKDIR 后面加上镜像操作系统的文件夹,表明工作的文件夹是镜像系统的 /usr/src/myapp 文件夹。

RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/: 上面一条语句切换到了镜像系统的工作文件夹,这条语句则是为上面干净的镜像系统安装相关依赖,这里只用到了 Django 这一个第三方库,所以在 requirements.txt 里面写入即可,-i 是指定下载源,这些都和 Linux 上的命令是一致的。

WORKDIR /usr/src/myapp/Web: 这是把工作目录切换到 我们的 Django 系统的根目录下。

CMD python manage.py runserver 0:7979: CMD 表示的是在镜像系统内执行什么命令,这个是 Django 项目的启动命令。

4、build 构建一个容器

前面我们的所有准备工作都已经做完了,然后使用 build 来把我们构建的系统变成一个可以运行的容器(container)。

Dockerfile 所在的文件夹,在我这里是 /home/hunter/docker/ ,执行如下命令:

docker build . -t python:3.6

然后就可以看到 Dockerfile 一行一行执行命令的信息输出,类似下图:
Docker系列笔记 之使用 Docker 运行 Django 容器
当上述指令执行完毕,输出类似于如下信息,则表示容器创建成功:
Docker系列笔记 之使用 Docker 运行 Django 容器
复制一下倒数第二行 built 后面的一串代码,这个后面构建容器,也就是 container 的时候要用到。

5、run 运行容器

接下来我们运行创建一个容器,使用如下命令:

docker run -p 7979:7979 6811c43789de

6811c43789de 这一串代码,就是上一步复制下来的 id,这一行命令的意思是运行这个容器,并将容器的 7979 端口映射到你本身操作系统的 7979 端口。

为什么要映射端口呢?
因为每一个容器都类似于一个小黑盒,与外界是不连通的,要访问里面的信息,必须将其映射出来。

我看过很多教程教程,他们在执行这一步之后,会输出 Django 系统初始化的一些信息,但我这里,没有显示。

6、 测试与查看

我们在浏览器访问一下,服务器的 ip+port,在我这里是http://192.168.31.222:7979/ ,就可以看到我们搭建的系统已经运行起来了,如下如所示:
Docker系列笔记 之使用 Docker 运行 Django 容器
在我们执行 run 命令的地方也可以看到 请求的输出信息:
Docker系列笔记 之使用 Docker 运行 Django 容器
然后,我们可以进入一下我们构建的这个 container 看一下。

首先,docker container ls 查看所有正在运行的 container,可以看到类似如下信息:
Docker系列笔记 之使用 Docker 运行 Django 容器
有我们刚刚运行的 container 信息,包括 container idport 映射信息,name 等字段。

我们可以通过 container id 或者 name 这个字段进入我们刚刚创建的 container,我用 container id 进入容器:

docker container exec -it 524d98f18334 bash

然后就进入了我们创建的 container 系统,查看一下 container 里面运行的 Python 进程:

ps -ef | grep python

可以看到有 端口为 7979 的 Django 系统在运行:
Docker系列笔记 之使用 Docker 运行 Django 容器
然后可以 使用 exit 退出该容器。

以上,就是使用 Docker 来运行一个 Django 容器的全过程。

PS:以上代码放在我个人 github 的 docker 目录下,地址:https://github.com/x1204604036/docker