在CentOS系统上基于Docker自构建镜像部署Django项目

Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)。

在这个项目中我用的就是Docker-CE

Django

Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。

Django 是一个开放源代码的 Web 应用框架,由 Python 写成。

Django 采用了 MVT 的软件设计模式,即模型(Model),视图(View)和模板(Template)

安装Docker

国内 daocloud 一键安装命令

curl -sSL https://get.daocloud.io/docker | sh
Docker命令的基本使用
# 启动docker 如果启动不了说明安装失败
service docker start
# 查看所有镜像
docker images
# 查看所有的启动的容器
docker ps
# 启动容器
docker run -it 镜像ID\镜像名称:标记 /bin/bash
# 将容器端口映射到7979
docker run -p 7978:7979 镜像ID\镜像名称:标记
# 查看所有容器
docker ps -a
# 删除容器 前提是容器已停止 否者报错
docker rm 容器ID\名称
# 删除镜像
docker rmi 镜像ID\镜像名称:标记
# 停止容器
docker stop 容器ID\名称
# 重启一个容器
docker restart 容器ID\名称
# 启动一个已停止的容器
docker start 容器ID\名称
配置文件

因为要用自己构建的镜像,所以就可以用Dockerfile来构建。

首先我自己做了一个项目Ginet。

下面是项目目录

api
ginet
__pycache__
templates
manage.py

在项目目录里创建Dockerfile和requirements.txt文件。

vim Dockerfile
vim requirements.txt

创建后项目目录为

api
ginet
__pycache__
templates
manage.py
Dockerfile
requirements.txt
Dockerfile

用于执行一些命令来构建我需要的这个镜像

每行命令上是对该行命令的解释

# 使用的是基于python3.8.2的Linux的镜像 该Python基于Linux-Debian系统
FROM python:3.8.2
# RUN 执行一个命令 在我们要构建的镜像里递归创建一个文件夹
RUN mkdir /data/prj/ginet -p
# 然后将当前Dockerfile位于的目录里的所有文件复制到之前在镜像里创建的那个文件里
COPY . /data/prj/ginet
# 指明面的命令的工作目录
WORKDIR /data/prj/ginet
# 更新pip版本
RUN pip install --upgrade pip
# 换成清华的镜像源 下载要快一些
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 安装requirements.txt文件里写的依赖项
RUN pip install -r requirements.txt -i  https://mirrors.aliyun.com/pypi/simple/
# 指明工作目录
WORKDIR /data/prj/ginet
# CMD在镜像启动时执行的命令 在这里就是以8000端口启动Django项目
CMD python manage.py runserver 0.0.0.0:8000
Requirements.txt

在这个歌文件里指明要安装的依赖有哪些,我的Django项目里用到了这些于是我就安装这些

django
PyJWT
PyMySQL
djangorestframework
oss2
uwsgi
django-cors-headers
生成镜像

在Ginet的目录下,运行Dockerfile文件

# ginet是我要生成的镜像的名称 v1是我给这个版本的标志
docker build . -t ginet:v1
# 最后出现这个及生成镜像成功
# 1c1ac32e7b25 镜像ID
Successfully built 1c1ac32e7b25
Successfully tagged ginet:v1
启动项目

在命令行输入如下

docker run -p 8000:8000 ginet:v1

进入浏览器输入127.0.0.1:8000,就看到自己的项目就成功了

其他

要是下次想用,同样通过Dockerfile来快速创建自己的镜像,或者将这个镜像上传仓库,下次下载就可以了。

之前记得要先申请一个免费的DockerHub的账号

# 登录我自己的仓库
# 登录
[root@localhost ginet]# docker login
# yanggeol 是我的用户名
[root@localhost ginet]# docker tag ginet:v4 yanggeol/ginet:v4
[root@localhost ginet]# docker push yanggeol/ginet:v4
# 搜索镜像
[root@localhost ginet]# docker search yanggeol/ginet
# 退出
[root@localhost ginet]# docker logout
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值