1. 程式人生 > 其它 >編寫多個服務的compose檔案

編寫多個服務的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已經部署成功。