داکر - لاراول

بهتر بود اول در مورد داکر بگم . اما دیدم که توی ویرگول هست . نیازی نیست هزار بار یک مطلب نوشته بشه . بهتره که همدیگرو کامل کنیم . ( در حد سواد و توان ) . من هم در حد سوادم تصمیم گرفتم که نحوه داکرایز کردن لاراول رو براتون بگم . خیلی سخت نیست . باحاله .

اگر نمیدونین داکر چیه ، به لینک زیر برید .

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 رو ویرایش میکنیم و مقادیر زیر رو میزاریم داخل فایل :

# Dockerfile
FROM php:7.2-apache
RUN docker-php-ext-install pdo_mysql
RUN a2enmod rewrite
ADD . /var/www
ADD ./public /var/www/html

حالا باید یک image بسازیم :

$ docker build -t laravelDockerize .
Sending build context to Docker daemon 199.3 MB
Step 1 : FROM php:7.2-apache
 ---> ff9a799b983b
Step 2 : RUN docker-php-ext-install pdo_mysql
 ---> Running in 887b0da6b9f0
# ...
 ---> c118d49af5a5
Removing intermediate container 887b0da6b9f0
Step 3 : RUN a2enmod rewrite
 ---> Running in 404d0edd6155
# ...
 ---> 3b310df07570
Removing intermediate container 404d0edd6155
Step 4 : ADD . /var/www
 ---> 32a347cdecff
Removing intermediate container 38d0903c1043
Step 5 : ADD ./public /var/www/html
 ---> 152beb432214
Removing intermediate container c714564b3dec
Successfully 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-apache
RUN docker-php-ext-install pdo_mysql
RUN a2enmod rewrite
ADD . /var/www
ADD ./public /var/www/html
ADD config/docker/apache.conf /etc/apache2/httpd.conf
COPY config/docker/php.ini /usr/local/etc/php/

خوب یک بار دیگه image رو اجرا میکنیم .

$ docker build -t laravelDockerize .

حالا به دیتابیس و صفحه ها روترها دسترسی کامل داریم و روی همون آی پی قبلی میتونیم کارارو بکنیم .

بهتره که همیشه تنظیمات داکرتون رو روی git یا روی Hub خود داکر بفرستید (push). اینجوری دیگه لازم نیست هر بار این کارارو بکنید .

در آخر اگر مطلبم مفید بود یک فنجون قهوه مهمونم کن . حرف زیاد داریم بزنیم