Docker运行Django框架

这篇具有很好参考价值的文章主要介绍了Docker运行Django框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Django框架

创建django-pg项目目录

[root@docker ~]# mkdir docker-compose-django
[root@docker ~]# cd docker-compose-django/
[root@docker docker-compose-django]# mkdir django-pg

在项目目录下创建docker-compose.yml文件

  • 该文件定义了两个服务,一个是名为db的Postgres数据库,另一个是名为web的Django应用程序
#进入django-pg根目录,配置docker-compose.yml,注意选项和参数之间的空格,不能用Tab键,只能用空格键
#选项与选项之间有层级关系,注意对齐
[root@docker ~]# cd docker-compose-django/django-pg
[root@docker django-pg]# vim docker-compose.yml 

version: '3'
services:
  db:
    image: postgres
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    volumes:
      - db_data:/var/lib/postgresql
  web:
   build: .
   command: python manage.py runserver 0.0.0.0:8000
   volumes:
     - .:/code
   ports:
     - "8000:8000"
   depends_on:
     - db
volumes:
  db_data: {}
  
#在该目录下使用docker-compose config命令以此来检查配置文件参数是否有误,未报错即可
[root@docker django-pg]# docker-compose config
name: django-pg
services:
  db:
    environment:
      POSTGRES_DB: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_USER: postgres
    image: postgres
    networks:
      default: null
    volumes:
    - type: volume
      source: db_data
      target: /var/lib/postgresql
      volume: {}
  web:
    build:
      context: /root/docker-compose-django/django-pg
      dockerfile: Dockerfile
    command:
    - python
    - manage.py
    - runserver
    - 0.0.0.0:8000
    depends_on:
      db:
        condition: service_started
    networks:
      default: null
    ports:
    - mode: ingress
      target: 8000
      published: "8000"
      protocol: tcp
    volumes:
    - type: bind
      source: /root/docker-compose-django/django-pg
      target: /code
      bind:
        create_host_path: true
networks:
  default:
    name: django-pg_default
volumes:
  db_data:
    name: django-pg_db_data

在项目目录下创建requirements.txt文件

  • requirements.txt文件用于记录所有依赖包及其精确的版本号,隶属于Python
#进入django-pg根目录,配置requirements.txt
[root@docker ~]# cd docker-compose-django/django-pg
[root@docker django-pg]# vim requirements.txt 

Django>=2.0,<3.0
psycopg2>=2.7,<3.0

在项目目录下创建Dockerfile文件

#进入django-pg根目录,配置Dockerfile
[root@docker ~]# cd docker-compose-django/django-pg
[root@docker django-pg]# vim Dockerfile 

#从Python 3父镜像开始
FROM python:3
ENV PYTHONUNBUFFERED 1
#在镜像中添加code项目
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
#在镜像中安装由requirements.txt文件指定要安装的Python依赖
RUN pip install -r requirements.txt
COPY . /code/

在项目目录下创建Django项目,构建上下文

#进入django-pg根目录,执行docker-compose run命令
[root@docker ~]# cd docker-compose-django/django-pg
[root@docker django-pg]# docker-compose run web django-admin startproject myexample .

.....(过程略)

#此时会去拉取镜像进行构建

查看服务列表

[root@docker django-pg]# docker-compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
django-pg-db-1      "docker-entrypoint.s…"   db                  running             5432/tcp

#状态为runnning,端口5432开放即可

设置Django数据库连接

  • 以下配置参数是由docker-compose.yml文件所指定的postgres镜像所决定
#执行完docker-conmpose构建后在目录下会生成两个文件
[root@docker django-pg]# ls -l
total 16
-rw-r--r-- 1 root root 385 Jun  5 10:16 docker-compose.yml
-rw-r--r-- 1 root root 152 May 30 14:22 Dockerfile
-rwxr-xr-x 1 root root 629 Jun  5 10:32 manage.py
drwxr-xr-x 3 root root  93 Jun  5 10:57 myexample
-rw-r--r-- 1 root root  36 May 30 14:14 requirements.txt

#编辑myexample/settings.py文件,修改‘DATABASES’选项参数和‘ALLOWED_HOSTS’选项参数
[root@docker django-pg]# vim myexample/settings.py 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

ALLOWED_HOSTS = ["*"]			#配置访问权限

启动Django应用程序

#在django-pg根目录下执行docker-compose up命令
[root@docker django-pg]# docker-compose up
[+] Running 2/0
 ⠿ Container django-pg-db-1   Created                                                                0.0s
 ⠿ Container django-pg-web-1  Created                                                                0.0s
Attaching to django-pg-db-1, django-pg-web-1
django-pg-db-1   | 
django-pg-db-1   | PostgreSQL Database directory appears to contain a database; Skipping initialization
django-pg-db-1   | 
django-pg-db-1   | 2023-06-05 03:34:41.145 UTC [1] LOG:  starting PostgreSQL 15.3 (Debian 15.3-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
django-pg-db-1   | 2023-06-05 03:34:41.146 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
django-pg-db-1   | 2023-06-05 03:34:41.146 UTC [1] LOG:  listening on IPv6 address "::", port 5432
django-pg-db-1   | 2023-06-05 03:34:41.148 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
django-pg-db-1   | 2023-06-05 03:34:41.152 UTC [28] LOG:  database system was shut down at 2023-06-05 02:59:33 UTC
django-pg-db-1   | 2023-06-05 03:34:41.155 UTC [1] LOG:  database system is ready to accept connections
django-pg-web-1  | Watching for file changes with StatReloader
django-pg-web-1  | Performing system checks...
django-pg-web-1  | 
django-pg-web-1  | System check identified no issues (0 silenced).
django-pg-web-1  | 
django-pg-web-1  | You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
django-pg-web-1  | Run 'python manage.py migrate' to apply them.
django-pg-web-1  | June 05, 2023 - 03:34:42
django-pg-web-1  | Django version 2.2.28, using settings 'myexample.settings'
django-pg-web-1  | Starting development server at http://0.0.0.0:8000/
django-pg-web-1  | Quit the server with CONTROL-C.

#注意这里不要ctrl C掐掉服务进程了,直接去浏览器访问

再次查看服务列表

#另启一个终端查看服务,#进入django-pg根目录
[root@docker ~]# cd docker-compose-django/django-pg
[root@docker django-pg]# docker-compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
django-pg-db-1      "docker-entrypoint.s…"   db                  running             5432/tcp
django-pg-web-1     "python manage.py ru…"   web                 running             0.0.0.0:8000->8000/tcp, :::8000->8000/tcp

#8000端口已映射,状态running

web访问Django主页

http://192.168.88.101:8000

Docker运行Django框架文章来源地址https://www.toymoban.com/news/detail-471795.html

关闭并清理服务

#先ctrl c掐掉进程,然后删除服务与其对应的卷,最后删除项目目录即可
[root@docker django-pg]# docker-compose down --volumes

关于Docker容器运行Django框架时的问题

1,docker-compose.yml文件中关于db的部分配置应是这样:

db:
    image: postgres
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    volumes:
      - db_data:/var/lib/postgresql

上述需设置环境,指定用户名,密码和数据库,这是为了解决django-pg-db-1容器无法正常运行,启动自动退出的问题


2,与此对应的myexample/settings.py文件中DATABASES配置应如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}


3,值得注意的一点,在myexample/settings.py文件中需设置网页访问地址IP参数否则浏览器无法正常访问django页面:

ALLOWED_HOSTS = []		#这个选项中括号里面填入Docker主机IP或者是'*'即可,注意要用双引号引起来

到了这里,关于Docker运行Django框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django框架入门到精通(04)Django创建第一个项目 (黄菊华老师大学生毕业设计学习教程)

    博主介绍: 《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月06日
    浏览(53)
  • 《Django项目》day1--配置docker、git、项目的创建

    docker安装教程:安装docker 我自己是租了一个阿里云的服务器,学生买很便宜;在阿里云上租好的服务器默认登上去是root账户,我们可以先给自己创建一个账户并分配sudo权限: 区分重点: 我们所租的云服务器属于第二层,第一层是VMware下的终端,我们以后所管理的项目都应

    2024年03月14日
    浏览(104)
  • 从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

      Django是目前比较火爆的框架,之前有在知乎刷到,很多毕业生进入大厂实习后因为不会git和Django框架3天就被踢掉了,因为他们很难把自己的工作融入到整个组的工作中。因此,我尝试自学Django并整理出如下笔记。   在这部分,我将从Django的安装讲起,从创建项目到制

    2024年02月09日
    浏览(72)
  • 【Django】从安装Django到运行一个Django项目

    安装完成后除了在模块目录lib下回有Django模块文件外,在python的安装目录下的Scripts目录下会生成一个django-admin.exe,这个工具是用来创建django项目的 ,会在创建项目的时候默认吧项目需要额文件和文件夹创建好 django中项目会有一些默认的文件和默认的文件夹。 打开终端。 进

    2024年02月03日
    浏览(38)
  • 【python】Django——django简介、django安装、创建项目、快速上手

    笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【Django专栏】 Django——django简介、django安装、创建项目、快速上手 Django——templates模板、静态文件、django模板语法、请求和响应 Django——连接mysql数据库 Django 是一个高效、功能强大的 Web 应用程序框架,采用 Python 编写

    2024年02月20日
    浏览(54)
  • django——创建 Django 项目和 APP

    命令 : 创建Django项目 django-admin startproject name 创建子应用 python manager.py startapp name 2.1 创建工程 在使用Flask框架时,项目工程目录的组织与创建是需要我们自己手动创建完成的。 在django中,项目工程目录可以借助django提供的命令帮助我们创建。 2.1.1 创建 创建工程的命令为:

    2024年02月12日
    浏览(37)
  • Django项目框架搭建,快速入门Django

    Django提供了 django-admin 这个功能强大的命令行管理工具,其中最重要的就是可以利用它来完成项目的创建 startproject是 django-admin 的子命令,用于创建项目。这里,使用这个子命令创建了djangoy项目 项目的骨架如下: 启动django项目: 看到如下界面,代表一个初始的django项目创建

    2024年02月03日
    浏览(47)
  • 【Django】Django创建一个文件下载服务

    当使用Django创建一个下载服务时,您可以设置一个视图来处理文件下载请求,并根据您的需求提供文件下载链接。以下是一个简单的示例,演示如何在Django中实现基本的文件下载服务: 创建Django项目和应用: 首先,确保您已经创建了一个Django项目,并在其中创建了一个应用

    2024年02月11日
    浏览(53)
  • django REST框架- Django-ninja

    Django 是我学习的最早的web框架,大概在2014年,当时选他原因也很简单就是网上资料比较丰富,自然是遇到问题更容易找答案,直到 2018年真正开始拿django做项目,才对他有了更全面的了解。他是一个入门有门槛,学会了做项目非常方便的Web框架。 《2020 Python 开发者调查结果

    2024年02月05日
    浏览(34)
  • Django学习(1):Django项目的初步创建与简单配置

            每一个python项目都创建一个新的虚拟环境有助于我们对于项目与其所对应包的管理等。 这里使用pycharm工具进行操作演示。         pycharm左上方找到菜单——File——New Project。         点击后弹出新建项目窗口进行配置 Location:项目总路径,选择一个空的文件夹。

    2024年04月23日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包