کار با docker-compose
قبل از هر چیزی میخوام یه تعریف خوب از docker compose ارائه بدم؛
- یه ابزار هست.
- چند تا کانتینر رو به صورت همزمان میتونه اجرا بکنه.
- یه فایل هست که توش تعریف میکنی چطوری باید اپلیکیشن هات راه اندازی بشن، چطوری با هم تعامل بکنن.
توی این بخش میتونی اسم سرویس رو مشخص بکنی و بعدش دقیقا مشخص بکنی که اون سرویس چی هست.
بخش image
- توی اینجا ایمیج base و ورژنش رو مشخص می کنیم.
- البته میتونیم که یه ترفند خوب بزنیم و ورژن امیج رو از env فایل بخونیم.
- نکته اینه که اگه ایمیج وجود نداشته باشه اون رو از docker registery میگیره (pull میکنه).
- اگه شما swarm داشته باشی و روی یکی از نود ها اون ایمیج وجود نداشته باشه، از نود های دیگه اون ایمیج رو روی اون نود کپی میکنن.
بخش environment
- توی این بخش میایم متغیر هایی رو که دوست داریم به کانتینر پاس بدیم مشخص می کنیم.
- البته می تونیم این متغیر ها رو توی env فایل هم پاس بدیم.
بخش ports
- توی این بخش میایم port mapping ها رو انجام میدیم.
- مثلا 8080:80 یعنی اینکه کانتینر port مون 80 هست و port ای که قراره expose بشه 8080 هست.
بخش networks
- توی این بخش میتونیم یک یا چند تا نتورک برای کانتینر مشخص بکنیم.
- البته اگه نتورک رو مشخص نکنیم خود داکر برای اون docker compose میاد نتورک default میسازه که اسمش از COMPOSE_PROJECT_NAME توی env فایل گرفته میشه.
- این بخش نتورک رو ایجاد نمیکنه (یه بخش جداگونه به اسم networks داریم که اون نتورک ها رو ایجاد میکنه)، بلکه فقط مشخص میکنه که من به کدوم نتورک وصل میشم.
بخش volumes
- این جا میایم volume های کانتینر رو مشخص می کنیم.
- توی همین جا هم میتونیم نوع volume و تنظیماتش رو مشخص بکنیم.
- توی اینجا تنظیمات network های custom رو مشخص بکنیم.
- توی اینجا volume های custom رو مشخص می کنیم تا برامون بسازتش.
برای ایجاد سرویس ها docker compose میتونی از کامند `docker-compose up` استفاده بکنی.