فصل چهارم: Docker Compose

تعریف چند سرویس: وب و دیتابیس

یک نمونه‌ی واقعی‌تر

حالا یک docker-compose.yml کامل‌تر می‌سازیم که یک برنامه‌ی وب را به یک پایگاه‌داده‌ی پستگرس متصل می‌کند و از volume برای ماندگاری داده و متغیر محیطی برای پیکربندی استفاده می‌کند:

version: "3.9"

services:
  web:
    build: .
    ports:
      - "8000:8000"
    environment:
      - DATABASE_URL=postgres://appuser:apppass@db:5432/appdb
    depends_on:
      - db

  db:
    image: postgres:16
    environment:
      - POSTGRES_USER=appuser
      - POSTGRES_PASSWORD=apppass
      - POSTGRES_DB=appdb
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:

در سرویس web، به‌جای image از کلید build: . استفاده شده که یعنی داکر به‌جای دانلود یک image آماده، از Dockerfile موجود در همان پوشه، image بسازد. depends_on ترتیب راه‌اندازی را کنترل می‌کند تا سرویس db پیش از web شروع شود، هرچند نکته‌ی مهم این است که این تنها ترتیب راه‌اندازی کانتینر را تضمین می‌کند، نه آماده بودن کامل پایگاه‌داده برای پذیرش اتصال.

بلوک volumes سطح بالا

در انتهای فایل، بخش volumes در سطح بالا، volume نام‌گذاری‌شده‌ی pgdata را تعریف می‌کند که در سرویس db استفاده شده است. این ساختار به شما اجازه می‌دهد کل معماری چندسرویسی برنامه را با یک دستور docker compose up راه‌اندازی کنید.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.