روزی روزگاری، *محمد* از دست گیتلب به کفر آمد و تصمیم گرفت تا سرویسی برای شرکت در همین زمینه راهاندازی کند ولی به دلیل خستگی زیاد از شما خواسته تا به او در راستای این هدف کمک کنید.
در این تمرین، ما از شما میخواهیم یک سرویس `gitea` را تنظیم و راهاندازی کنید. برای دانلود پروژه اولیه روی [این لینک](/contest/assignments/44197/download_problem_initial_project/148103/) کلیک کنید.
## جزئیات پروژه
* سرویس `gitea` شما باید روی پورت `3000` اجرا شده باشد.
* دیتای سرویس `gitea` نباید به هیچ عنوان از بین برود (یعنی اگر به هر دلیلی سرویس ها متوقف شدند، نباید **هیچ دیتایی** از دست رفته باشد.).
* اگر سیستم به هر دلیلی با مشکلی مواجه شد، باید سرویس `gitea` بلافاصله مجددا اجرا شود.
* پورت `ssh` سرویس برای *محمد* اهمیتی ندارد، برای اطمینان میتوانید از پورت `222` استفاده کنید.
* باید *id* کاربر و *id* گروهی که به دستورات `gitea` دسترسی دارند برابر با `1000` باشد.
* نام کانتینری که سرویس `gitea` را اجرا میکند باید برابر با `gitea` باشد.
## نکات تکمیلی
۱. شما تمامی تغییرات خود را درون فایل `docker-compose.yml` اعمال کنید. شما تنها مجاز به ارسال این فایل خواهید بود و با دستور زیر فایل ارسالی شما درون سیستم داوری اجرا خواهد شد:
```
docker-compose up --no-build -d
```
پس از اجرای دستور بالا باید تمامی سرویسهای مورد نظر شما تنظیم و راهاندازی و اماده تست کردن باشند.
۲. شما تنها مجاز به استفاده از ایمیجهای موجود در [این لینک](https://gitlab.com/qio/standard/container_registry) هستید و میتوانید هر تعداد سرویس که نیاز دارید تنظیم و راهاندازی کنید تا به خواسته مسئله برسید. توجه داشته باشید که **شما مجاز به استفاده از ایمیجهای دیگر نیستید و فقط میتونید از مجموعه ایمیجهای موجود در همین ایمیجرجیستری استفاده کنید.**
۳. شما اجازهی *build* کردن یک *Image* جدید **نخواهید داشت** و باید از *Imageهای* استاندارد کوئرا استفاده کنید. بهطور خاص، برای *gitea* میتوانید از *Image* با آدرس زیر استفاده کنید:
```
registry.gitlab.com/qio/standard/gitea:1.16.8
```
۴. در صورت نیاز به دیتابیس، از ایمیجهای زیر نیز میتوانید استفاده کنید:
```
registry.gitlab.com/qio/standard/mysql:8.0
registry.gitlab.com/qio/standard/postgres:14.1
registry.gitlab.com/qio/standard/postgres:14.1-alpine
```
### ارسال فایلهای اضافی
توجه کنید که هر فایل و محتوای دیگری به جز `docker-compose.yml` که در فایل ارسالی شما قرار داشته باشد حذف خواهد شد.
در صورتی که نیاز دارید که فایلی علاوهبر `docker-compose.yml` به سیستم داوری کوئرا ارسال کرده و در راهحل خود از آنها استفاده کنید، میتوانید از پوشهی `data` استفاده کنید. برای این کار کافیست که پوشهای به نام `data` در کنار `docker-compose.yml` ایجاد کرده و برای سیستم داوری کوئرا ارسال نمایید.
```
services:
sample_container:
volumes:
- ./data/extrafile:/extrafile
```
فراموش نکنید که در این حالت، فایل `extrafile` که *volume* شده است را درون پوشهی `data` قرار داده و آن را برای سیستم داوری ارسال نمایید. برای مثال، پوشهی ارسالی شما برای داوری کوئرا به شکل زیر میتواند باشد:
```
.
├── data
│ └── extrafile
└── docker-compose.yml
```
**توجه:** سیستم داوری کوئرا بهصورت خودکار فایل `docker-compose.yml` را با کامند `up` اجرا میکند. شما نیازی به کد یا اسکریپتی برای اجرای این کار ندارید.
**توجه:** استفاده کردن از پوشهی `data`، کاملاً به خواست شما بوده و ممکن است این سؤال بدون نیاز به استفاده از پوشهی `data` حل شود.
## نحوه ارسال پاسخ
شما تنها مجاز به تغییر در فایل `docker-compose.yml` هستید و در صورت نیاز در کنار آن میتوانید پوشهای با نام `data` نیز قرار داده و ارسال نمایید. تمامی فایلها یا پوشههای دیگر حذف خواهند شد!