Giới thiệu về Laradock
Bài đăng này đã không được cập nhật trong 7 năm
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 databaseDB_HOST=mysql
(hoặcmariadb
,postgres
-- tên của container), database name:homestead
, user:homestead
, password:secret
, root password:root
(xem file docker-compose.yml).
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
All rights reserved