Trước khi bắt đầu với bài viết này, mặc định chúng ta đã cài docker ở trong máy rồi nha 😀
1 Các services sẽ tạo:
- ***application (image: debian):*** Mục đích chỉ để tạo volume cho các services mount to.
- ***workspace(image: kevinduy/php):*** Image cài đặt php7.2, các extensions của php7.2, nodejs, npm, yarn, parcel-bundler, gulp-cli, git, composer và các linux packages cần thiết như: nano, vim, curl ...
- ***mysql:*** Sử dụng [mysql official image](https://hub.docker.com/_/mysql/)
- ***nginx(image: kevinduy/nginx):*** Tạo và cấu hình nginx block
2 Chúng ta sẽ bắt đầu tạo laravel project với docker-compose:
- Tạo thư mục project:
mkdir project-name
- Tạo tệp tin
docker-compose.yml
trong thư mụcproject-name
:
version: '2'
services:
application:
image: debian
volumes:
- ./:/var/www/app
workspace:
image: kevinduy/php
restart: always
volumes_from:
- application
tty: true
links:
- mysql
mysql:
restart: always
image: mysql
volumes:
- ./.docker/mysql:/var/lib/mysql
ports:
- "6691:3306"
environment:
MYSQL_DATABASE: homestead
MYSQL_USER: homestead
MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: root
nginx:
image: kevinduy/nginx
restart: always
volumes_from:
- application
ports:
- "80:80"
- "443:443"
tty: true
command: /bin/bash -c "/serve.sh workspace laravel.test /var/www/app/public && nginx"
- chạy docker
- Tại thư mục dự án
project-name
:- Chạy lệnh
docker-compose up -d
để tạo và chạy các containers. - Chạy lệnh
docker-compose exec workspace bash
để vào containerworkspace
. - Bây giờ chúng ta đã vào container và tại thư mục
/var/www/app
trong container - Chạy lệnh
composer create-project --prefer-dist laravel/laravel blog
để tạo dự án laravel - Sau khi tải và cài đặt xong laravel. Chạy lệnh `mv ./blog/{.,} ./ && rm -rf blog`* để move tất cả các file trong thư mục blog ra thư mục hiện tại và xoá thư mục blog. (Lý do: vì lệnh composer chỉ tải về khi thư mục đích là trống)
- Bây giờ mở trình duyệt và gõ domain
laravel.test
. Chúng ta thấy welcome page của project laravel.
- Chạy lệnh
- Như vậy là chúng ta đã tạo và chạy dự án laravel với docker compose.
- Nếu muốn stop container, chúng ta chạy lệnh
docker-compose down
Có lẽ trong docker-compose.yml file chỉ khó hiểu ở dòng lệnh này thôi command: /bin/bash -c "/serve.sh workspace laravel.test /var/www/app/public && nginx"
Lệnh này sẽ chạy file server.sh trong image kevinduy/nginx với các variables được sử dụng trong file bash này và cũng là cấu hình của block nginx:
– workspace
: đây là tên của php service
– laravel.test
: server name của block với tên này luôn
– /var/www/app/public
: đây là root path