สร้าง Laravel Environments บน Docker ง่ายๆด้วย Laradock

หลายๆคนอาจจะประสบปัญหากับเรื่อง 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

เข้าไปยัง directory ที่ชื่อว่า laradock จากนั้น ทำการคัดลอก env-example แล้วเปลี่ยนชื่อเป็น .env

ใช้คำสั่ง cp 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
คำสั่ง dokcer-compose 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 ก็สามารถทำได้ภายในไฟล์นี้เลย

ตั้งค่า Nginx กรณีที่เปิด service หลาย container

4. Laravel set up

หลังจากที่ปล่อยให้ docker ติดตั้ง container เสร็จแล้ว ลองเข้าไปยังหน้าเว็บจะพบข้อความประมาณนี้

จะพบกับ Internal 500 เพราะ เพราะเรายังไม่ได้ติดตั้งแพคเกจ และตั้ง .env ใน laravel

500 Internal Error

ถ้าหากเราไม่ได้ไปเปลี่ยนค่าอะไรใน 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

Have fun with coding 😀