在Docker调试Django项目

在Docker调试Django项目

Docker可以很好地管理我们的环境,同时还可以保持宿主机的环境是十分干净的。因为之前一直都是使用的Django进行Web开发,这几天突发奇想,想着先使用Docker打包Django应用,之后在Dccker容器中调试我们的项目。

环境准备

首先需要一个能正常运行的Django项目,这里以一个原始的Django项目模板为例。它正常运行起来像是这样。
正常运行的Django项目
接下来我们需要来编写Dockerfile来打包我们的Django应用。

环境搭建过程

使用Dockerfile构建Docker镜像

在构建镜像之前,需要将当前项目的依赖输出到一个文件中,在当前项目根目录下使用如下命令将依赖库文件导入到 requirements.txt 中:

pip freeze > requirements.txt

项目的根目录创建一个名为Dockerfile的文件,并写入以下内容:

# 初始镜像
FROM python:3.7.4

# 更新并安装依赖
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        postgresql-client \
    && rm -rf /var/lib/apt/lists/*

# 设定在容器中的工作目录
WORKDIR /usr/src/app

# 安装python依赖
COPY requirements.txt ./
RUN pip install -r requirements.txt

# 复制当前项目到容器中
COPY . .

# 暴露的端口
EXPOSE 8000

# 执行启动脚本
# RUN chmod a+x ./bin/ && sh ./bin/start.sh

# 启动容器
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

之后可以通过命令的方式来构建并运行容器:

# 构建Docker容器
docker build -t docker-django-app .
# 以后台的方式运行Docker容器
docker run -d -p 8001:8000 --name docker-django-app-test docker-django-app

参数解释:

  • -p 8000:8000 表示将主机的8001端口映射到容器的8000端口上
  • --name docker-django-app-test 表示当前运行的容器的名字叫 docker-django-app-test

构建Docker镜像:
Docker构建镜像
运行Docker镜像:
Docker镜像运行
使用docker ps -a 命令查看当前的docker镜像运行情况:
docker镜像的运行情况
此时在浏览器中输入:http://127.0.0.1:8001 即可访问Django应用。
成功启动Django应用

还可以通过Pycharm提供的运行选项来打包Docker镜像,具体操作如下:

  1. 配置Docker构建和运行选项。注意在下图中的对应位置勾选上 Run build image ,这样在打包容器完成后会同时运行容器。
    在Pycharm中配置打包选项
  2. 打包并运行Docker镜像。
    打包并运行Docker镜像
  3. 查看Docker镜像的运行情况
    Docker镜像运行情况
  4. 在浏览器中输入 http://127.0.0.1:8002 来查看Django应用的运行情况。
    Django应用运行在8002端口

配置项目的Python解释器为Docker镜像中的解释器

配置Docker解释器
在配置完成后,Pycharm会进入到镜像中加载这个镜像中的python包,速度可能有点慢,请耐心等待!

测试在Docker中调试Django

之后在浏览器在浏览器中输入 http://127.0.0.1:8003 就可以看到启动页面了。
项目成功启动
同时我们对代码的修改也能实时地反映出来,即:Django的服务器会自动监听文件的更改进行重启。
为了说明可以正常在Docker中调试Django进程,编写了以下测试函数进行测试(在urls.py):中写入以下内容:

from django.http import HttpResponse

def test_debug(request):
    a = 2 + 3
    return HttpResponse("a = " + a)

urlpatterns = [
    path('', test_debug),
    path('admin/', admin.site.urls),
]

现在再访问 http://127.0.0.1:8003 即可看到如下图所示的调试界面。
调试Django应用

至此,整个在Docker中调试Django应用的环境已经搭建完毕了!!!撒花🎉🎉🎉

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值