Make easy setup your Dev environment (Part-1)

မင်္ဂလာပါ၊ ကျွန်တော်တို့တွေ development setup လုပ်တဲ့အချိန်တိုင်း ပြဿနာပေါင်းစုံ တက်ပါတယ်။ PHP version မတူတာတွေ၊ Apache/Nginx version မကိုက်တာတွေ ပြီးတော့ version upgrade လုပ်ရင် တက်တဲ့ error တွေနဲ့ တော်တော်ခေါင်းကိုက်ရပါတယ်။ XAMPP/WAMP သွင်းပြီး apache မ run တာတွေနဲ့ပဲ အချိန်ကုန်ရပါတယ်။ ပြီးတော့ local dev environment နဲ့ live server dev environment မတူတာတွေ အမျိုးစုံဖြစ်တတ်ပါတယ်။ ဒီလို ပြဿနာတွေကို အချိန်တိုတွင်း လွယ်လွယ်ကူကူ ဖြေးရှင်းဖို့အတွက် Docker နဲ့ laravel project setup ကို လုပ်ပြသွားမှာပါ။
Introduction Docker
Docker ပေါ်တာကတော့ အရမ်းကြီးမကြာသေးပါဘူး၊ ၂၀၁၃ မှ ပေါ်တာဖြစ်တဲ့အတွက် new technology လို့ ပြောလို့ရပါတယ်။ တချို့ Geek တွေကတော့ အနာဂတ်ရဲ့ အလားလာ အကောင်းဆုံး၊ ပြီးတော့ လေ့လာသင့်တဲ့ technology တစ်ခုလို့လည်း ပြောကြပါတယ်။ Docker အကြောင်း အပြည့်အစုံ သိချင်ရင်တော့ မူရင်း site မှာပဲ သွားဖတ်ကြည့်ကြပါ။ ကျွန်တော်ပြောပြနေရင် ဟိုရောက်ဒီရောက်နဲ့ စာရှည်နေမှာ စိုးလို့ပါ။
ကျွန်တော် အရင်ဆုံးပြောခဲ့သလိုပဲ docker နဲ့ run မှာ ဖြစ်တဲ့ အတွက် ကျွန်တော်တို့ရဲ့ စက်ထဲကို docker ထည့်ဖို့ လိုပါပြီ။ Docker က Community Edition(CE) နဲ့ Enterprise Edition (EE) ဆိုပြီး ရှိပါတယ်။ Community Edition ပဲ free ရတာပါ။ EE ကတော့ free မရပါဘူး။ အဲဒီတော့ free ရတဲ့ CE နဲ့ စကြတာပေါ့ :-D
Installation Docker
Docker installation က ရိုးရှင်းပါတယ်။ မူရင်းဆိုဒ်မှာသွားပြီးတော့ ကိုယ့်ရဲ့ စက် OS နဲ့ကိုက်ညီတဲ့ docker file ကို download ဆွဲပြီး install လုပ်လိုက်ပါ။ Mac နဲ့ Window ကတော့ GUI နဲ့ install လုပ်လို့ရပါတယ်။ Download လုပ်တဲ့အချိန်မှာလည်း ကိုယ့်စက်ရဲ့ x64 bit x32 bit သေချာရွေးပြီး down ပါ။ Ubuntu နဲ့ အခြား Linux OS အတွက်ဆိုရ တော့ terminal installation လုပ်ရမှာပါ။ Ubuntu အတွက် Docker ရှိပါတယ်။ ဒီမှာ ကြည့်ပါ။ https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#install-docker-ce
installation လုပ်ပြီးပြီဆိုရင်တော့ terminal မှာ docker version ဒါမှမဟုတ် docker လို့ ရေးလိုက်တာနဲ့ အောက်ကပုံအတိုင်းတွေ့မြင်ရပါပြီ(Fig-0.1)။

အခုဆိုရင်တော့ docker installation ကို အောင်မြင်စွာ ပြီးဆုံးသွားပါပြီ။
Intro Laradock
မူရင်း Docker နဲ့ setup လုပ်တာထက်၊ docker ပေါ်မှာ အလုပ်လုပ်ပေးတဲ့ Laradock နဲ့ setup လုပ်တာက ပိုမြန်ပါတယ်။ အဲဒီအတွက် laradock နဲ့ setup လုပ်ပြပါမယ်။ Laradock အတွက် Full Documentation ကတော့ ဒီမှာပါ(http://laradock.io/)။ ကျွန်တော်ကတော့ installation နဲ့ တချို့ အဓိက အပိုင်းလေးတွေပဲ ပြောပြသွားမှာပါ။မှတ်ချက်( laradock မပါပဲလည်း setup လုပ်လို့ရပါတယ်)။
Setup Laradock
setup မလုပ်ခင် ကျွန်တော်တို့ သတိထားရမယ့်ဟာရှိပါတယ်။ အရင်ဆုံး ကိုယ့်စက်ထဲမှာ ရှိတဲ့ apache nginx mysql XAMPP WAMP MAMPစတဲ့ အရင်က သွင်းထားတာတွေကို ရပ်ထားပါ။ laradock ကို ကျွန်တော်တို့ရဲ့ single project တစ်ခုချင်းလိုက်ပြီး setup လုပ်မှာလား။ ဒါမှမဟုတ် နောက် project တွေအတွက် တနေရာတည်းကပဲ setup လုပ်မလား ၂မျိုးရှိပါတယ်။ အောက်မှာရှင်းပြထားပါတယ်။
v1 — Single project folder structure
အောက်ပုံကတော့ project တစ်ခုချင်းလိုက်ပြီး laradock ကို run တဲ့ ပုံစံပါ။ လက်ရှိ run နေပြီးသား project ထဲမှာ ထည့်ထားတာပါ။ ကျွန်တော်တို့စပြီး စမ်းကြည့်ပါမယ်။ အရင်ဆုံး ကိုယ့်ရဲ့ project folder ကို ဝင်လိုက်ပါ။ ပြီးရင် အောက်က command နဲ့ run လိုက်ပါ။
~ cd yourProjectFolder/~ git clone https://github.com/laradock/laradock.git
အပေါ်က command ကတော့ ကျွန်တော်တို့ရဲ့ project folder ထဲမှာ submodule အနဲ့နဲ့ laradock ကို git ကနေ clone လုပ်လိုက်တာပါ။ အားလုံးပြီးရင်တော့ အောက်က ပုံ (Fig-0.2) အတိုင်း တွေ့ရပါမယ်။

အပေါ်ကပုံ(Fig-0.2) မှာတွေ့ရတဲ့အတိုင်း laradock folder က ကျွန်တော်တို့ရဲ့ current develop လုပ်နေတဲ့ project ထဲမှာရှိနေတာပါ။ ကျွန်တော်တို့စပြီး docker ကို run ပါတော့မယ်။
1 — ကျွန်တော်တို့ project ထဲက laradock folder ထဲကို ဝင်လိုက်ပါ။
cd laradock2 — env-example ကနေ.env ဆိုပြီး ပြောင်းလိုက်ပါ။
cp env-example .env (or) ကြိုက်နှစ်သက်သလို လုပ်ဆောင်ပါ။3 - docker container ကို စပြီး run ပါတော့မယ်။ ကျွန်တော်ကတော့ ဒီ(၄မျိုး)ကိုပဲ အရင် run လိုက်ပါမယ်။ ကြိုက်နှစ်သက်ရာ container များကို space ခြားပြီး ထည့်သွားလို့ရပါတယ်။ connection ပေါ်မူတည်ပြီး အချိန်နည်းနည်းစောင့်ရပါတယ်။
~ docker-compose up -d nginx mysql redis beanstalkd// docker-compose ps ဆိုပြီး run လိုက်ပါ။ အကုန်အောင်မြင်စွာ install လုပ်ပြီးပြီဆိုရင်တော့ အအောက်မှာရေးထားတဲ့ပုံစံအတိုင်းတွေ့မြင်ရမှာ ဖြစ်ပါတယ်။~ docker-compose psName Command State Ports
--------------------------------------------------------------------
laradock_applications_1 Exit 0
laradock_beanstalkd_1 up
laradock_mysql_1 up
laradock_nginx_1 up
laradock_php-fpm_1 up
laradock_redis_1 up
laradock_workspace_1 up
ကျွန်တော်တို့ project အတွက်လိုအပ်တဲ့ configuration အနည်းငယ်လုပ်ပါမယ်။ ဒါကြောင့် laradock folder ထဲက .env ကို ပြင်ပါမယ်။
//.evn file ထဲမှာ အောက်ပါအတိုင်း လိုက်ရှာပြီးတော့ ပြင်လိုက်ပါ။ မတွေ့လျှင်အသစ်ထည့်ပါ။
DB_HOST=mysql
REDIS_HOST=redis
QUEUE_HOST=beanstalkd// mysql configuration အတွက်ဆိုရင်တော့ ဒီ block လေးကို ရှာပြီး ပြင်လိုက်ပါ။### MYSQL Container
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
ဒီအဆင့်ထိ ရောက်လိုက်ပြီဆိုရင်တော့…. browser ကို သွားပြီးတော့ http://localhost ကိုခေါ်ကြည့်ပါ။ ကျွန်တော်တို့ရဲ့ application ဟာ အောင်မြင်စွာ run နေတာကို တွေ့မြင်ရပါမယ်။
မှားနေတာ၊ ဒါမှမဟုတ် ဝေဖန်အကြံပြုချင်တာများရှိရင် မှတ်ချက်ရေးပေးပါခမျ။ ကျေးဇူးတင်ပါတယ်။
Ref: http://laradock.io/ https://www.docker.com/
နောက်ထပ် ရေးချင်တာတွေများနေတဲ့အတွက် လက်ရှိစာရှည်သွားမှာ စိုးတာကြောင့် နောက်တပတ်
သောကြာနေ့မှပဲpart-2တင်ပါမယ်။
