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
-
Cài đặt Docker (version >= 1.12), Docker Compose
-
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
-
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.
-
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
-
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).
-
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