12/08/2018, 14:32

Giới thiệu về Laradock

Giới thiệu Laradock là một môi trường phát triển dành cho PHP dựa trên Docker. Với phương châm " Use Docker first and learn about it later. ", nó bao gồm các Docker Images được cấu hình sẵn giúp cho việc tích hợp Docker vào các dự án PHP một cách nhanh chóng và thuận tiện hơn. Các tính năng ...

Giới thiệu

Laradock là một môi trường phát triển dành cho PHP dựa trên Docker. Với phương châm "Use Docker first and learn about it later.", nó bao gồm các Docker Images được cấu hình sẵn giúp cho việc tích hợp Docker vào các dự án PHP một cách nhanh chóng và thuận tiện hơn.

Các tính năng

  • Dễ dàng chuyển đổi giữa các phiên bản PHP: 7.0 (default), 5.6, 5.5...
  • Hỗ trợ PHP-FPM và HHVM
  • Cấu hình sẵn Nginx dành cho Laravel framework
  • Database engines: MySQL, PostgreSQL, MariaDB, MongoDB, Neo4j, RethinkDB
  • Cache Engines: Redis, Memcached, Aerospike
  • Servers: NGINX, Apache2, Caddy
  • Message Queueing Systems: Beanstalkd, RabbitMQ
  • Các công cụ: Composer, Git, Node, Gulp, xDebug, PhpMyAdmin, PgAdmin, ElasticSearch, Selenium, Envoy, Vim...
  • More?

Cài đặt và sử dụng

  1. Cài đặt Docker (version >= 1.12), Docker Compose

  2. Clone repo laradock/laradock vào thư mục PHP project

    git submodule add https://github.com/laradock/laradock.git
    

    Ví dụ cấu trúc thư mục:

    - project1
        - laradock
    - project2
        - laradock
    
  3. cd vào thự mục laradock và khởi động các container

    Ví dụ, khởi động NGINX và MySQL (workspace và php-fpm được khởi chạy tự động)

    docker-compose up -d nginx mysql
    

    Các container bao gồm: workspace, nginx, hhvm, php-fpm, mysql, redis, postgres, mariadb, neo4j, mongo, apache2, caddy, memcached, beanstalkd, beanstalkd-console, rabbitmq, workspace, phpmyadmin, aerospike, pgadmin, elasticsearch, rethinkdb.

  4. Thực hiện các câu lệnh như Artisan, Composer, PHPUnit, Gulp,...

    Các câu lệnh composer, database migration, phpunit, npm, gulp,... có thể được thực thi bên trong container workspace:

    docker-compose exec workspace bash
    # hoặc 
    docker exec -it workspace bash
    
  5. Sửa các cấu hình của PHP project

    Ví dụ, đối với Laravel, chúng ta cần sửa file .env để kết nối đến database DB_HOST=mysql (hoặc mariadb, postgres -- tên của container), database name: homestead, user: homestead, password: secret, root password: root (xem file docker-compose.yml).

  6. Go http://localhost/

Tài liệu

1. Thay đổi cấu hình Docker container

Các cấu hình mặc định của các container có thể được thay đổi bằng cách sửa file docker-compose.yml và Dockerfile của từng container.

Ví dụ:

Thay đổi database name:

 args:
    - MYSQL_DATABASE=project_db
    - MYSQL_USER=project
    #...

Thay đổi cổng access Redis database:

Định dạng: <HOST Port>:<CONTAINER Port>

ports:
    - "1111:6379"
    # ...

Sau khi thay đổi, chúng ta cần restart lại container:

docker restart <container_name>
# Hoặc
docker-compose up -d [<container_name>]

Thêm tham số --build để rebuild container nếu có thay đổi trong file Dockerfile.

2. Xem log

Logs của NGINX serrver được đặt trong thư mục logs/nginx.

Ngoài ra để xem log của các chương trình khác (MySQL, PHP-FPM,...) bạn có thể dùng lệnh: docker logs <container_name>

3. Chuyển đổi phiên bản PHP (PHP-FPM)

Mặc định PHP 7 được sử dụng.

A) Switch from PHP 7.0 to PHP 5.6

1 - Mở file docker-compose.yml. 2 - Tìm đến dòng dockerfile: Dockerfile-70 và thay đổi thành Dockerfile-56:

php-fpm:
    build:
        context: ./php-fpm
        dockerfile: Dockerfile-70
...

3 - Rebuild container

docker-compose build php-fpm

B) Switch from PHP 7.0 or 5.6 to PHP 5.5

4. Cài đặt xDebug

1 - Sửa file docker-compose.yml, thay đổi giá trị INSTALL_XDEBUG thành true trong cấu hình của 2 containers workspace và php-fpm

workspace:
    build:
        context: ./workspace
        args:
            - INSTALL_XDEBUG=true
...
php-fpm:
    build:
        context: ./php-fpm
        args:
            - INSTALL_XDEBUG=true
...

2 - Re-build the containers

docker-compose build workspace php-fpm

3 - Sửa file cấu hình xdebug: laradock/workspace/xdebug.ini hoặc laradock/php-fpm/xdebug.ini:

xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.remote_connect_back=1

Tham khảo thêm cấu hình cho IDE: https://github.com/LarryEitel/laravel-laradock-phpstorm

5. Cài đặt Laravel bên trong Docker contaner

1 - Enter workspace container

docker-compose exec workspace bash

2 - Install Laravel.

composer create-project laravel/laravel my-cool-app "5.2.*"

3 - Sửa file docker-compose.yml:

Mặc định, LaraDock sử dụng đường dẫn đến thư mục cha như là thư mục chứa code Laravel. Do đó, với ứng dụng Laravel được install trong thư mục my-cool-app, bạn có thể move nó sang thư mục parent hoặc thay đổi cấu hình như sau:

application:
    image: tianon/true
    volumes:
        # - ../:/var/www
        - ../my-cool-app/:/var/www
    ...

4 - Sửa file .env và làm việc với Laravel bên trong thư mục my-cool-app

6. Install Node + NVM, Yarn

1 - Sửa file docker-composer.yaml, thay đổi các giá trị INSTALL_NODE và INSTALL_YARN thành true

workspace:
    build:
        context: ./workspace
        args:
            - INSTALL_NODE=true
            - INSTALL_YARN=true
...

2 - Re-build the container

docker-compose build workspace

7. MySQL access from host

Trong trường hợp bạn muốn sử dụng các phần mềm client như Workbench, Adminer, Valentina Studio...

Các server MySQL/MariaDB có thể kết nối được từ bên ngoài container bằng cách forward MySQL/MariaDB port ra ngoài máy host.

ports:
    - "33066:3306"

Định dạng: <HOST Port>:<CONTAINER Port>

VD: 3306 là cổng của MySQL server chạy bên trong container, 33066 là cổng để kết nối từ máy host thông qua địa chỉ localhost:33066.

8. Xem thêm

  • https://github.com/laradock/laradock#Documentation
  • https://github.com/LarryEitel/laravel-laradock-phpstorm
0