داکر - لاراول

بهتر بود اول در مورد داکر بگم . اما دیدم که توی ویرگول هست . نیازی نیست هزار بار یک مطلب نوشته بشه . بهتره که همدیگرو کامل کنیم . ( در حد سواد و توان ) . من هم در حد سوادم تصمیم گرفتم که نحوه داکرایز کردن لاراول رو براتون بگم . خیلی سخت نیست . باحاله . اگر نمیدونین داکر چیه ، به لینک زیر برید . https://virgool.io/DockerMe/what-is-docker-piqgcvx1nqt7حالا بیاین ببینیم که داستان چیه .خوب اگر داکر رو در حد مبتدی کار کرده باشین ، میدونین که یک فایل dockerfile داریم و یک composer . حالا میخوایم بهترین تنظیمات رو انجام بدیم . اول از همه مطمئن بشیم که داکر ماشین راه افتاده و داره کار میکنه :$ docker-machine start default$ eval $(docker-machine env default)دستور اول ماشین رو روی default اجرا میکنه و دستور دوم روی محیط docker-machine مقدار default رو ست میکنه . حالا ما یک پروژه لاراول داریم . با همه جزییات و فایل ها و همه چیز . کاری هم به تنظیمات لاراول نداریم . فرض میگیریم یک پوشه داریم و باید این پوشه بره بالا . بعدشم یک سری دستور برای راه اندازیش میزنیم . این خیلی مهمه که پوشه لاراول کنار فایل DockerFile باشه . بزارید اینجوری بریم جلو .اول یک پوشه میسازیم .بعدش DockerFile میسازیم . بعدش هم پروژه لاراول رو توی پوشه ای که ساختیم کپی میکنیم . cd ~/var/www/ mkdir laravelDockerize cd laravelDockerize touch DockerFile cp -a html/laravelProject/ laravelDockerize/خوب حالا فایل DockerFile رو ویرایش میکنیم و مقادیر زیر رو میزاریم داخل فایل :# DockerfileFROM php:7.2-apacheRUN docker-php-ext-install pdo_mysqlRUN a2enmod rewriteADD . /var/wwwADD ./public /var/www/htmlحالا باید یک image بسازیم :$ docker build -t laravelDockerize . Sending build context to Docker daemon 199.3 MBStep 1 : FROM php:7.2-apache ---> ff9a799b983bStep 2 : RUN docker-php-ext-install pdo_mysql ---> Running in 887b0da6b9f0# ... ---> c118d49af5a5Removing intermediate container 887b0da6b9f0Step 3 : RUN a2enmod rewrite ---> Running in 404d0edd6155# ... ---> 3b310df07570Removing intermediate container 404d0edd6155Step 4 : ADD . /var/www ---> 32a347cdecffRemoving intermediate container 38d0903c1043Step 5 : ADD ./public /var/www/html ---> 152beb432214Removing intermediate container c714564b3decSuccessfully built 152beb432214فقط خط اول رو باید اجرا کنید . خط های بعدی نتیجه اجرای خط اوله . حالا container لاراول رو روی 80 میاریم بالا . $ docker run -p 80:80 laravelDockerizeالان لاراول باید روی پورت 80 بیاد بالا.برای اینکه بدونید لاراول روی ماشین چه پورتی داره ، دستور زیرو بنویسین :$ docker-machine ip defaultمثلا اگر آی پی http://192.168.99.100 بزنید ، باید لاراول بیاد بالا . اما اگر میخواین مطمئن باشدی که آی پی شما چنده ، باید دستور بالا رو بزنین . اما هنوز کار داریم . بریم مراحل بعدیما نه دیتابیس رو آوردیم ، نه کارهای تنظیمات آپاچ رو . باید کاملش کنیم .فرض کنیم که دیتابیس روی آدرس localhost دسترسی داره و telnet پورت 3306 بازه . خوب دسترو زیر رو بزنیم پس ، که بتونیم برسیم به دیتابیس . اما قبلش باید مطمئن باشیم که فایل .env با تنظیمات ما یکسانه . $ docker run -p 80:80 -e DB_HOST=localhost laravelDockerizeخوب . اوضاع خوبه . حالا بریم که تنظیمات آپاچ رو اضافه کنیم . ما یک سری تنظیمات توی آپاچ سیستم لوکال داریم که سالم و درسته . کافیه به داکر بگیم که همینو بردار بنداز بالا . پس فایل DockerFile رو به زیر تغییر بدید :FROM php:7.2-apacheRUN docker-php-ext-install pdo_mysqlRUN a2enmod rewriteADD . /var/wwwADD ./public /var/www/htmlADD config/docker/apache.conf /etc/apache2/httpd.confCOPY config/docker/php.ini /usr/local/etc/php/خوب یک بار دیگه image رو اجرا میکنیم . $ docker build -t laravelDockerize .حالا به دیتابیس و صفحه ها روترها دسترسی کامل داریم و روی همون آی پی قبلی میتونیم کارارو بکنیم . بهتره که همیشه تنظیمات داکرتون رو روی git یا روی Hub خود داکر بفرستید (push). اینجوری دیگه لازم نیست هر بار این کارارو بکنید . در آخر اگر مطلبم مفید بود یک فنجون قهوه مهمونم کن . حرف زیاد داریم بزنیم