محمد برنامه‌نویسی است که برای سرعت اجرای نرم‌افزار اهمیت ویژه‌ای قائل است. برای همین منظور او پیشنهاد داده که ذخیره‌سازی اطلاعات مربوط به هدر CLIENT-KEY، در دیتابیس Redis انجام شود. در نتیجه شما باید پاسخی که برای سوال دوم مسابقه ارسال کرده‌اید را به گونه‌ای تغییر دهید که از Redis برای خواندن و ذخیره‌سازی اطلاعات استفاده کند.

برای دانلود پروژه‌ی اولیه روی این لینک کلیک کنید.

کانتینرها

در ابتدای کار، برای پیاده سازی این سیستم، نیاز است که فایل docker-compose.yml را تکمیل کنید. توجه کنید که امکان build کردن یک Image جدید را دارید. برای دیتابیس Redis می‌توانید از image زیر استفاده نمایید:

registry.gitlab.com/qio/standard/redis:latest
Plain text

توجه داشته باشید که باید فایل docker-compose.yml را به‌ شکلی تکمیل کنید که پس از up کردن آن، هر ۲ کانتینر (Api, Redis) به درستی اجرا شوند. سپس با توجه به درخواست‌هایی که از سمت سیستم داوری برای api ارسال می‌شود، باید کلیدهای CLIENT-KEY در دیتابیس Redis ذخیره شده باشد. در غیر این صورت نمره‌ کامل به شما تعلق نمی‌گیرد.

شرایط containerها

۱. نام containerها باید حتماً به شکل زیر باشد:

api
redis
Plain text

۲. هریک از این containerها باید روی پورت مشخصی که مربوط به آن‌ها می‌باشد قرار گیرند. دقیقاً به شکل زیر:

port of api = 80
port of redis = 6379
Plain text

دقت کنید که تنظیمات پورت‌ها به گونه‌ای انجام شود که وقتی سیستم داوری دستور docker-compose up را اجرا کرد، بتواند به هر دو پورت ۸۰ و ۶۳۷۹ دسترسی داشته باشد.

۳. نام دیتابیس ردیس که ذخیره سازی باید در آن انجام شود، 0 است.

۴. هر کلید باید بصورت جداگانه در Redis ذخیره شود. به این صورت که اگر n بار درخواست با هدر CLIENT-KEY=test ارسال شد، دیتا باید به گونه‌ای ذخیره شده باشد که اگر از Redis کلید test خوانده شود، مقدار n را برگرداند.

ایجاد Volume

در صورتی‌که نیاز دارید فایل یا مسیری را به درون هریک از containerها Volume کنید، می‌توانید از پوشه‌ای به نام api استفاده کنید.

services:
  sample_container:
    build: ./api
    volumes:
      - ./api/somefile:/somefile
Plain text

فراموش نکنید که فایل somefile را درون پوشه‌ی api قرارداده و آن را برای داوری ارسال نمایید. برای مثال، پوشه‌ی ارسالی شما برای داوری کوئرا به شکل زیر می‌تواند باشد:

.
├── api
│   └── somefile
└── docker-compose.yml
Plain text

**توجه:** سیستم داوری کوئرا به‌صورت خودکار فایل docker-compose.yml را با کامند up اجرا می‌کند. شما نیازی به کد یا اسکریپتی برای اجرای این کار ندارید.

نحوه ارسال پاسخ

شما فقط می‌توانید مسیرهای های‌لایت شده را تغییر دهید:

.
├──  api 
│   └── ...
└──  docker-compose.yml 
Plain text

در نهایت این پوشه را zip کرده و ارسال کنید. توجه کنید که پس از extract کردن فایل zip شما، باید فایل docker-compose.yml را ببینیم.


ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.