สร้าง Laravel Environments บน Docker ง่ายๆด้วย Laradock
หลายๆคนอาจจะประสบปัญหากับเรื่อง set environments ซึ่ง laravel ก็มี homestead แล้ว แต่อยากลองมาใช้ docker ดูบ้าง แต่ก็ขี้เกียจไปตั้งค่าให้วุ่นวาย ซึ่งบทความนี้ผมจะแนะนำอีกหนึ่งหนทาง สำหรับคนที่อยากได้อะไรไวๆ
เหมือนกับการต้มมาม่า
แค่ แกะซอง เทน้ำร้อน รอ และก็กินได้เลย
Laradock คืออะไร
ก็คือการรวม docker image ที่จำเป็นในการสร้างโปรเจค Laravel ไว้ด้วยกัน เพื่อแก้ปัญหาเรื่องการ set up environments ทำให้ Dev ไม่ต้องปวดหัวกับการตั้งค่าหรือติดตั้ง environments
ซึ่งความปวดหัวที่ว่าก็คือการเขียน Dockerfile เอง หรือการเขียน docker-compose.yml ก็ตาม สิ่งเหล่านี้ถ้าเรามาศึกษาเองทั้งหมด มันก็จะใช้เวลา และต้องทำความเข้าใจพอสมควร (แต่ก็แนะนำให้นำไปศึกษาต่อ เพื่อเพิ่มประสิทธิภาพในการทำงาน)
และตัว Laradock ก็มีเอกสารที่ค่อนข้างดีเลยทีเดียว ซึ่งทุกคนสามารถอ่านละทำตามได้ไม่ยาก จึงเหมาะกับมือใหม่มากๆครับ :)
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 โดยใช้คำสั่ง
cp env-example .env
2. Docker up !!
หลังจากที่เราโคลน laradock มาแล้ว เราก็จะให้ docker สร้าง container ขึ้นมาตามนี้
cd laradock # ย้ายไปยังไดเร็กทอรี่ของ laradock
docker-compose up -d nginx mariadb workspace # ให้ docker สร้าง container จากไฟล์ docker-compose.yml
จากนั้นรอสักพักใหญ่ๆ ให้ระบบทำการติดตั้งและตั้งค่า 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 environments ต่างๆได้ภายในไฟล์ 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=defaul
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