หลายๆคนอาจจะประสบปัญหากับเรื่อง set environments ซึ่ง Laravel ก็มี Homestead แล้ว แต่อยากลองมาใช้ docker ดูบ้าง แต่ก็ขี้เกียจไปตั้งค่าให้วุ่นวาย ซึ่งบทความนี้ผมจะแนะนำอีกหนึ่งหนทาง สำหรับคนที่อยากได้อะไรไวๆเหมือน กับการต้มมาม่า แค่ แกะซอง เทน้ำร้อน รอ และก็กินได้เลย
Laradock คืออะไร
ก็คือการรวม docker image ที่จำเป็นในการสร้างโปรเจค Laravel ไว้ด้วยกัน เพื่อแก้ปัญหาเรื่องการ set up environments ทำให้ Dev ไม่ต้องปวดหัวกับการตั้งค่าหรือติดตั้ง environments
Prepare installation
เตรียมความพร้อมก่อนเริ่ม
git — https://git-scm.com/downloads
docker — https://www.docker.com/get-docker
docker-compose — https://docs.docker.com/compose/install/#install-compose
1. สร้าง Project Directory
clone Laravel มาจาก github กรณีที่ไม่อยากลง composer บนเครื่อง
git clone
https://github.com/laravel/laravel.git
./
หรือถ้ามี composer ก็สามารถสร้างโปรเจคตามปกติ
composer create-project laravel/laravel
จากนั้นก็ clone laradock มาไว้ใน directory อีกที
git clone
https://github.com/Laradock/laradock.git
เข้าไปยัง directory ที่ชื่อว่า laradock จากนั้น ทำการคัดลอก env-example แล้วเปลี่ยนชื่อเป็น .env
2. Docker up !!
พิมคำสั่ง
docker-compose up
-d nginx mariadb workspace
จากนั้นรอสักพักใหญ่ๆ ให้ระบบทำการติดตั้งและตั้งค่า environments (เฉพาะแค่ครั้งแรกตอนติดตั้งเท่านั้น)
ถ้าขึ้นตัวสีแดงๆแบบในภาพหมายความว่าสร้าง container ไม่สำเร็จ อาจจะเป็นเพราะ port ที่ต้องการใช้มี service อื่นๆ ใช้อยู่ แต่โดยปกติแล้วถ้าไม่ได้เปิด service อะไรไว้ก็จะขึ้นเป็นตัวสีเขียว (กรณีของผมคือผมเป็น contain อีกตัวไว้ แต่ container nginx ที่สร้างใหม่ดันไปใช้ port เดียว ผมจึงต้องไปแก้ port ในไฟล์ laradock/.env ดูข้อมูลเพิ่มเติมได้ในข้อที่ 3)
หากเราต้องการเชคสถานะสามารถทำได้โดย
docker-compose ps หรือ docker ps
3. อธิบายคำสั่ง และ Config เพิ่มเติม
( ข้ามไป 4ได้เลยนะ )
อธิบายคำสั่ง
dock-compose up — ทำการสร้าง docker containner จากไฟล์ docker-compose.yml
-d — ทำงานเบื้องหลังไม่แสดงข้อความออกมา
nginx mariadb workspace — ชื่อ container ที่สร้างไว้ภายในไฟล์ docker-compose.yml
หากบางท่านอยากใช้ mysql ก็ให้ใช่ mysql แทน mariadb จะได้ประมาณ
docker-compose up
-d nginx
mysql
workspace
หรืออยากใช้ apche ก็จะได้เป็น
docker-compose
up -d
apache
mariadb workspace
Config เพิ่มเติม
Laradock สามารถ แก้ไข config enviroments ต่างๆได้ภายในไฟล์ laradock/.env
เช่นผมต้องการเปลี่ยนพอร์ตของ nginx ซึ่งปกติเป็น 80 ให้เป็น 8081 ก็สามารถทำได้ภายในไฟล์นี้เลย
4. Laravel set up
หลังจากที่ปล่อยให้ docker ติดตั้ง container เสร็จแล้ว ลองเข้าไปยังหน้าเว็บจะพบข้อความประมาณนี้
จะพบกับ Internal 500 เพราะ เพราะเรายังไม่ได้ติดตั้งแพคเกจ และตั้ง .env ใน laravel
ถ้าหากเราไม่ได้ไปเปลี่ยนค่าอะไรใน laradock/.env เราก็ใส่ค่าตามนี้ได้เลย (เป็นค่าตั้งต้นของ Laradock)
# ไฟล์ .env ของ Laravel
DB_CONNECTION=mysql DB_HOST=mariadb #IP ของ host ถ้าเราใช้ mysql container ก็ใส่ mysql แทน DB_PORT=3306 DB_DATABASE=default DB_USERNAME=root DB_PASSWORD=root
พิมคำสั่ง
docker-compose exec — user laradock workspace bash
ตอนนี้เราจะเหมือนเรา ssh ไปยัง docker container ที่ชื่อว่า workspace
ต่อด้วยการติดตั้งแพคเกจต่างของ Laravel ด้วยคำสั่ง
composer update

จากนั้นก็รอ (อีกแล้ว)
หลังจากที่ composer ติดตั้งเสร็จแล้วก็พิมพ์
php artisan key:generate
ลองกลับไปดูที่หน้าเว็บอีกที

ก็จะพอหน้าขาวๆแบบในภาพ
ลองสั่ง
php artisan migrate
เป็นอันเสร็จสิ้นการติดตั้ง Laradock และ Laravel ครับ
สามารถอ่านข้อมูลเพิ่มเติมได้ที่ Laradock.io