Development වැඩ ලේසි කරගන්න Docker use කරමු
අපේ developing කරන කොල්ලෝ කෙල්ලෝන්ට තියෙන common ප්රශ්න තමයි develop කරන laptop එහෙම format කරාට පස්සේ ආයෙමත් development environment එක setup කරගන්න එක. PHP install කරලා MYSQL install කරලා තව ඉතින් Redis/RabbitMQ වගේ එක ඕන වෙනවා නම් දවස් බාගයක් විතර යනවා ඔක්කොම install කරලා setup කරලා ඉවර කරගන්න.
ඊට පස්සේ පරණ වැඩ කරපු project එහෙම clone කරලා වැඩේ කරන්න යනකොට වැඩ කරන්නේ නෑ. තව දවස් එකහාමාරක් විතර හොයලා හොයලා බලනකොට තමයි තේරෙන්නේ PHP 7.0, MySQL 5.7 ඕන එකට අලුතෙන් install කරද්දී කරලා තියෙන්නේ PHP 7.3, MySQL 8.0. ඊටපස්සේ ඒක හදාගෙන එහෙම එනකොට තව දවස් බාගයක් විතර විතර ගිහින්.
සහ තව තව ප්රශ්න තියෙනවා. ඔයාට ඕන උනොත් PHP version දෙක තුනක් manage කරන්න. MYSQL version දෙක තුනක් manage කරන්න. Mongodb version දෙක තුනක් manage කරගන්න වගේ හරිම කරදරයි.
මම නම් දැන් කාලෙක ඉදන් මේ වගේ හැම එකකකට use කරන්නේ Docker. Docker ගැන දන්නේ නැත්නම් comment එකක් දාන්න මම ඒ ගැන වෙනම කියලා දෙන්නම්. ඒ නැතත් ගොඩක් online resources තියෙනවා docker basics ඉගෙන ගන්න.
මම අලුතෙන් development environment එක setup කරනවා නම් (format කරාට පස්සේ වගේ) මුලින්ම install කරන්නේ git ඊට පස්සේ docker and docker-compose.
මගේ හැම project එකකම docker-compose ෆයිල් එකක් තියෙනවා. මම මේකේ දාන්නේ project එක run කරන්න ඕන services. PHP, MYSQL, RABBITMQ, REDDIS වගේ.
මෙන්න මේ වගේ. php-73 කියන්නේ මගේ custom image එකක්. මොකද laravel වගේ ඒවාට සැහෙන්න extentions එහම ඕනේ. ඒක නිසා laravel වලට ඕන ඒවා install කරපු image එකක් තියාගෙන ඉන්නේ.
දැන් මේකේ හැටියට කොහොමද mysql, reddis වලට connect වෙන්නේ ?
app එක connect වෙන්නේ හොස්ට් එක තමයි mysql, port eka 3306. ඒ කියන්නේ හොස්ට් එකේ localhost වෙනුවට mysql කියලා දෙන්න. ඔයාගේ web app එක localhost:9001 වලින් access කරන්න පුළුවන්. ඔයාට mysql db එක බලන්න ඕනේ නම් work bench එකෙන් localhost 3333 port එකෙන් බලන්න පුළුවන්.
එතකොට composer install වගේ කරන්නේ කොහොමද ?
එකට docker app container එකට exec වෙන්න ඕනේ. docker exec -it CONTIANER_ID /bin/bash කියලා දුන්නම ඔයාට docker container එකට access හම්බෙනවා. ඔට පස්සේ composer install වගේ ඒවා කරන්න පුළුවන්.
මේ project එකේ වැඩ කරලා ඉවර උනාම docker-compose stop කියන command එක run කරාම ඔයාගේ ඔක්කොම services ටික නවතිනවා. ආයෙමත් මේ project එකේ වැඩ පටන් ගන්නකොට start කරගන්න තියෙන්නේ.
වැදගත්ම දේ තමයි ඔයාට මේ project එක වෙන කාට හරි යවන්න ඕනේ උනොත් කෙලින්ම යවන්න පුළුවන් මොකද ඒ කෙනාටත් ඔයාගේ php version install කර කර ඉන්න ඕනේ නැ. docker-compose එක run කරපු ගමන් ඔක්කොම වැඩ.
It works on my machine කියලා කියන්න ඕන වෙන්නේ නැ
එහෙනම් අදට ගියා.
තව දවසකින් මේ වගේම post එකක් අරගෙන එන්නම්. ඔයාලට ඕන දේවල් comment කරන්න. අදහසක් දාගෙනම යන්න.
අපේ developing කරන කොල්ලෝ කෙල්ලෝන්ට තියෙන common ප්රශ්න තමයි develop කරන laptop එහෙම format කරාට පස්සේ ආයෙමත් development environment එක setup කරගන්න එක. PHP install කරලා MYSQL install කරලා තව ඉතින් Redis/RabbitMQ වගේ එක ඕන වෙනවා නම් දවස් බාගයක් විතර යනවා ඔක්කොම install කරලා setup කරලා ඉවර කරගන්න.
ඊට පස්සේ පරණ වැඩ කරපු project එහෙම clone කරලා වැඩේ කරන්න යනකොට වැඩ කරන්නේ නෑ. තව දවස් එකහාමාරක් විතර හොයලා හොයලා බලනකොට තමයි තේරෙන්නේ PHP 7.0, MySQL 5.7 ඕන එකට අලුතෙන් install කරද්දී කරලා තියෙන්නේ PHP 7.3, MySQL 8.0. ඊටපස්සේ ඒක හදාගෙන එහෙම එනකොට තව දවස් බාගයක් විතර විතර ගිහින්.
සහ තව තව ප්රශ්න තියෙනවා. ඔයාට ඕන උනොත් PHP version දෙක තුනක් manage කරන්න. MYSQL version දෙක තුනක් manage කරන්න. Mongodb version දෙක තුනක් manage කරගන්න වගේ හරිම කරදරයි.
මම නම් දැන් කාලෙක ඉදන් මේ වගේ හැම එකකකට use කරන්නේ Docker. Docker ගැන දන්නේ නැත්නම් comment එකක් දාන්න මම ඒ ගැන වෙනම කියලා දෙන්නම්. ඒ නැතත් ගොඩක් online resources තියෙනවා docker basics ඉගෙන ගන්න.
මම අලුතෙන් development environment එක setup කරනවා නම් (format කරාට පස්සේ වගේ) මුලින්ම install කරන්නේ git ඊට පස්සේ docker and docker-compose.
මගේ හැම project එකකම docker-compose ෆයිල් එකක් තියෙනවා. මම මේකේ දාන්නේ project එක run කරන්න ඕන services. PHP, MYSQL, RABBITMQ, REDDIS වගේ.
YAML:
version: "3.9"
services:
app:
image: php-73
ports:
- "9001:80"
volumes:
- ${PWD}:/app
redis:
image: redis
ports:
- "9002:6379"
mysql:
image: mysql
ports:
- "3333:3306"
මෙන්න මේ වගේ. php-73 කියන්නේ මගේ custom image එකක්. මොකද laravel වගේ ඒවාට සැහෙන්න extentions එහම ඕනේ. ඒක නිසා laravel වලට ඕන ඒවා install කරපු image එකක් තියාගෙන ඉන්නේ.
දැන් මේකේ හැටියට කොහොමද mysql, reddis වලට connect වෙන්නේ ?
app එක connect වෙන්නේ හොස්ට් එක තමයි mysql, port eka 3306. ඒ කියන්නේ හොස්ට් එකේ localhost වෙනුවට mysql කියලා දෙන්න. ඔයාගේ web app එක localhost:9001 වලින් access කරන්න පුළුවන්. ඔයාට mysql db එක බලන්න ඕනේ නම් work bench එකෙන් localhost 3333 port එකෙන් බලන්න පුළුවන්.
එතකොට composer install වගේ කරන්නේ කොහොමද ?
එකට docker app container එකට exec වෙන්න ඕනේ. docker exec -it CONTIANER_ID /bin/bash කියලා දුන්නම ඔයාට docker container එකට access හම්බෙනවා. ඔට පස්සේ composer install වගේ ඒවා කරන්න පුළුවන්.
මේ project එකේ වැඩ කරලා ඉවර උනාම docker-compose stop කියන command එක run කරාම ඔයාගේ ඔක්කොම services ටික නවතිනවා. ආයෙමත් මේ project එකේ වැඩ පටන් ගන්නකොට start කරගන්න තියෙන්නේ.
වැදගත්ම දේ තමයි ඔයාට මේ project එක වෙන කාට හරි යවන්න ඕනේ උනොත් කෙලින්ම යවන්න පුළුවන් මොකද ඒ කෙනාටත් ඔයාගේ php version install කර කර ඉන්න ඕනේ නැ. docker-compose එක run කරපු ගමන් ඔක්කොම වැඩ.
It works on my machine කියලා කියන්න ඕන වෙන්නේ නැ
එහෙනම් අදට ගියා.
තව දවසකින් මේ වගේම post එකක් අරගෙන එන්නම්. ඔයාලට ඕන දේවල් comment කරන්න. අදහසක් දාගෙනම යන්න.





