Vagrant to Docker สำหรับนักพัฒนาที่ใช้ Laravel Framework (2)

มาถึงการใช้งาน LaraDock, A full PHP development environment for Docker. พัฒนาสำหรับนักพัฒนาที่ใช้ Laravel เป็นหลักนะครับ

Software Images ทั้งหมดที่มีอยู่ใน Laradock 

Database Engines: MySQL – MariaDB – Percona – MongoDB – Neo4j – RethinkDB – MSSQL – PostgreSQL – Postgres-PostGIS.
Database Management: PhpMyAdmin – Adminer – PgAdmin
Cache Engines: Redis – Memcached – Aerospike
PHP Servers: NGINX – Apache2 – Caddy
PHP Compilers: PHP FPM – HHVM
Message Queueing: Beanstalkd – RabbitMQ – PHP Worker
Queueing Management: Beanstalkd Console – RabbitMQ Console
Random Tools: HAProxy – Certbot – Blackfire – Selenium – Jenkins – ElasticSearch – Kibana – Mailhog – Minio – Varnish – Swoole – Laravel Echo…

จะเห็นว่ามีเยอะมาก แต่เริ่มแรกเราใช้อยู่ไม่กี่ตัวครับ เช่น NGINX/Apache2, MySQL, PhpMyadmin แค่นี้ก็สามารถรัน Laravel ได้แล้วนะครับ

ขั้นตอน เฉพาะเจาะจงแค่ใช้งานกับ Laravel เป็นหลักนะครับ ส่วนลึกในเรื่องของ Docker หรือ การใช้งาน Images ตัวอื่นๆของยกไว้ก่อนนะครับ

Requirements

  1. Git สำหรับ clone project Laradock project จาก github
  2. Docker >= 1.12 สำหรับ linux ซึ่งเป็น native อยู่แล้วจะไม่มีปัญหานะครับ ส่วน mac windows แนะนำตัวที่เป็น Docker for mac หรือ Docker for windows นะครับ ไม่แนะนำตัวที่ต้องรันบน Docker Toolbox

Installation

  1. git clone https://github.com/laradock/laradock.gitดึง Laradock จาก github ก่อนเป็นอันดับแรกต้องวาง Laradock folder ไว้ที่ใหน? คำคอบคือ วางไว้ที่ใหนก็ได้นะครับ แต่ถ้าให้สะดวกควรจะวางอยู่ใน folder project งานของเราดีกว่า เช่น
  2. Web Server config สำหรับผมเลือกใช้ NGINX เข้าไปที่ที่ folder laradock/nginx/sites จะมีตัวอย่างไฟล์คอนฟิกอยู่สองไฟล์ project-1.conf project-2.conf ตรงนี้ไม่น่ายากสำหรับผู้ที่เคย config LAMP stack มาแล้ว

    สร้างไฟล์คอนฟิกสำหรับ project งานของเราเช่น example.com.devเพิ่ม domain ใน hosts file

    127.0.0.1 project-1.dev
    127.0.0.1 project-2.dev
    127.0.0.1 example.com.dev

  3. Laradock configCopy env-example เป็น .env จะเป็นไฟล์คอนฟิกหลักของตัว Laradock
  4. Build และ Run Laradockdocker-compose up -d nginx mysql phpmyadmin
    สั่งให้รัน NGINX (web server) และ MySQL (database engine)
    ปัญหาส่วนมากที่เกิดมักจะเป็นเรื่องของ port ฝั่ง host ที่ชนกับ port ฝั่ง Container นะครับ ปัญหาอาจจะหลากหลาย การแก้ไขเบื้องตันให้ดูที่ docker-compose.yml
    เปิด browser และเข้าใช้งานที่ http://example.com.devส่วน phpmyadmin http://example.com.dev:8080
    phpMyAdmin config ฝั่ง Container


    phpMyAdmin config ฝั่ง host

จริง Docker มีความสามารถมากกว่านี้มากๆ ในเรื่องของการทำ Service ต่างๆนะครับ ในเรื่องของความเบาและความเร็วอย่างมหัศจรรย์ และการกำหนด services network ต่างๆเป็นคำสั่งคล้ายการการเขียนโปรแกรม (Software-defined networking) มันทำให้จุดนี้เป็นข้อดีข้อหนึ่งที่ทำให้เหล่าบรรดานักพัฒนามีชีวิตที่ง่ายขึ้นครับ