ساعت
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
ساعت
دقیقه
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
دقیقه
ثانیه
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
ثانیه

محمد برنامه‌نویسی است که برای سرعت اجرای نرم‌افزار اهمیت ویژه‌ای قائل است. برای همین منظور او پیشنهاد داده که ذخیره‌سازی اطلاعات مربوط به هدر 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 را ببینیم.


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