سلام
امروز ۲۸ آبان ۱۴۰۴
در مورد داکر کامپوز اومدم یه سری دستوارت رو بنویسم اینجا یادم نره.
ما یک dockerfile داریم که برای ساخت ایمیج داکر هست (ایمیج داکر عملا میتونه روی ریپو باشه یا توسط خودمون ساخته بشه هر ایمیج شامل چند لایه هست) مثلا داکر فایل چه چیزی داره یه فایل متنی هست که توش نوشته میشه ایمیج بیس ما چیه و ما چه چیزایی میخواهیم به اون اضافه کنیم طبیعتا سورس پروژه ای که میخواهیم دیپلوی بشه باید توی ایمیج کپی بشه. میتونیم مشخص کنیم توی ایمیج پایه چه دستوراتی زده بشه مثل apt update و...
پس داکرفایل به داکر توضیح میده که یه ایمیج از روی ایمیج پایه بساز با اجرای این دستوارت و...
حالا داکر کامپوز چیه؟
عملا وقتی پروژه بزرگ میشه ما نیاز به چند تا ایمیج داریم مثل ایمیج انجینکس ایمیج پستگرس و... داکر کامپوز میاد و چند تا ایمیج باهم رو مدیریت میکنه.
توی داکر کامپوز ما میگیم که چه سرویس هایی داریم (همون ایمیج ها) و هر سرویس چه ارتباطی با سرویس های دیگه داره چه پوشه های اشتراکی داره و چه پورت هایی که باید بهم وصل بشن و...
توی داکر کامپوز ممکنه بگیم که مثلا سه تا سرویس داریم که یکی از سرویس ها باید ایمیج اش ساخته بشه (معمولا همون ایمیج پروژه ی خودمون مثل پروژه ی جنگو که باید جنگو نصب بشه سورس کد ما بره توی ایمیج و اونجا اجرا بشه) و بقیه سرویس ها مثل انجینکس میتونه مستقیم از ریپوی داکر دانلود بشه و نیاز به ساخته شدن توسط ما نیست.
دستور docker build در مکانی که فایل docker-compose.yml وجود داره باعث میشه داکر این فایل رو بخونه و ایمیج هایی که نیاز به بیلد شدن دارند رو بیلد کنه عملا میره و ایمیج پایه رو میسازه و دستوارتی که گفتیم روی اون اجرا کنه رو اجرا میکنه و یه ایمیج جدید برای ما میسازه و داخل حافظه ی خودش در جایی که خودش میدونه ذخیره میکنه و شما میتونید با دستور docker image ls اون رو مشاهده کنید که حجمش چقدر شده و...
بعدش باید از روی ایمیج ها کانتینر ها ساخته بشن لذا دستور docker compose up رو میزنیم و این دستور باعث میشه کانتینر ها ساخته بشن به صورت خودکار و ارتباط هاشون هم که توی فایل docker-compose.yml گفته بودیم ایجاد بشن.
با دستور docker compose ps -a میتونید ببینید البته با همون دستور docker ps -a هم قابل مشاهده هست.
برای اینکه کانتینر ها رو حذف کنید میتونید از دستور docker compose down استفاده کنید.
ولوم ها در داکر به سه دسته تقسیم میشن.
۱. ولوم های با اسم مثل زیر
volumes: - postgres_data:/var/lib/postgresql/data
که عملا یک دایرکتوری در مکان خود داکر ساخته میشه و خودش مدیریتش میکنه میتونید با دستورات docker volum ببینید اونها رو
۲. Bind mount ها
که یک دایرکتوری مشخص در هاست رو درون کانتینر ماونت میکنه (توی ویندوز و مک چون فایل سیستم هاش فرق داره با لینوکس سرعتش پایینه)
volumes: - ./static:/app/static
نوع سوم هم که خیلی استفاده نمیشه ولوم بدون اسم هست چون نمیشه ارجا بهش داد
