ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

编写多个服务的compose文件

2022-05-29 13:02:34  阅读:160  来源: 互联网

标签:文件 compose postgres db django code pg 编写 Django


前言

DockerCompose主要用于编排多个服务,这种情形要重点考虑各服务的依赖关系和相互通信。这里给出一个部署Diango框架的示例,示范如何使用DockerCompose建立和运行一个简单的Django/PostgreSQL应用程序。Django是一个开源的Web应用框架,由Python编写而成。

一、定义项目组件

(1)创建一个空的项目目录django-pg,并在该目录下创建Dockerfile文件,输入以下内容并保存。

FROM python:3
ENV PYTHONUNBUFFERED 1
//在镜像中添加code目录
RUN mkdir /code WORKDIR /code COPY requirements.txt /code/ RUN pip install -r requirements.txt COPY . /code/

(2)继续在该目录下创建requirements.txt文件,输入以下内容并保存。

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

(3)继续在该目录下创建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: {}

二、创建Django项目

(1)切换到项目根目录,通过执行docker-compose run命令创建Django项目,如下所示。

[root@localhost django-pg]# docker-compose run web django-admin startproject myexample .
Creating network "django-pg_default" with the default driver
Creating volume "django-pg_db_data" with default driver
......
Creating django-pg_db_1 ... done
Building web
Step 1/7 : FROM python:3
......
Successfully built 36237a841655
Successfully tagged django-pg_web:latest

 三、连接数据库

(1)编辑项目目录中的myexample/settings.py文件,将其中的"DATABASES"定义修改如下。保存并关闭该文件。

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

(2)在项目目录的根目录下执行docker-compose up 命令。

(3)打开浏览器访问http://localhost:8000网址,出现如图所示Django欢迎界面,说明Django已经部署成功。

 

标签:文件,compose,postgres,db,django,code,pg,编写,Django
来源: https://www.cnblogs.com/qibingu/p/16321595.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有