编写多个服务的compose文件

前言

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已经部署成功。

 

posted @   学习快乐快乐学习  阅读(462)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示