編寫多個服務的compose檔案
阿新 • • 發佈:2022-05-29
前言
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已經部署成功。