• About
  • Advertise
  • Privacy & Policy
  • Contact
NQ NEWS
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
No Result
View All Result
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
No Result
View All Result
NQ NEWS
No Result
View All Result
Home Quản trị hệ thống

Thử cài đặt môi trường docker cho laravel

@admiz by @admiz
03/05/2021
in Quản trị hệ thống
0
Thử Cài đặt Môi Trường Docker Cho Laravel 60902c2b4454c.png

Tạo project Lavarel với Docker

Tham khảo cách tạo project mới tại hai địa chỉ dưới đây:

1. Thiết lập môi trường Laravel Docker cho môi trường development và production :https://medium.com/@shakyShane/laravel-docker-part-1-setup-for-development-e3daaefaf3c

2. Tương tự như trên nhưng bằng tiếng nhật :http://qiita.com/meidaimae/items/1b5902e2e520ece34b9a

Môi trường cài đặt Docker cho Laravel:

• docker: Docker version 17.06.0-ce, build 02c1d87

• docker-compose: docker-compose version 1.15.0, build e12f3b9

• docker-machine: docker-machine version 0.12.1, build c8b17e8

• OS: Ubuntu

Distributor ID: Ubuntu
Description: Ubuntu 16.04.2 LTS
Release: 16.04
Codename: xenial

Môi trường laravel mục tiêu:

• Webserver : Nginx 1.0

• Database : mysql 5.6

• PHP:7.0.4-FPM

Bước 1 : Tạo project laravel

cd tới nơi ta muốn đặt project rồi download archive của laravel.

curl -L https://github.com/laravel/laravel/archive/v5.4.30.tar.gz | tar xz

Ta có thể tạo project bằng composer, nhưng như vậy sẽ yêu cầu máy cài thêm composer nữa. Composer sẽ cần thiết cho project, nhưng với ý nghĩa của việc dùng docker, composer cũng như các library môi trường khác mình nghĩ nên cài đặt trên docker chứ không phải trên máy chủ. Chúng ta sẽ cài đặt composer ở các bước sau.

Download xong, chúng ta sẽ đổi tên thành tên project mà ta muốn, ở đây mình đổi thành sample-laravel mv laravel-5.4.30 sample-laravel. Và đặt con trỏ directory hiện tại vào đây cd sample-laravel

Đến đây ta đã có project thô của laravel. Để chạy được thì tiếp theo ta cần cài đặt các thư viện cho nó ở bước 2.

Bước 2 : Cài đặt thư viện cho laravel

Thông thường khi không dùng docker, ta sẽ cần cài composer trên máy chủ và chạy composer install để tải bộ thư viện cần thiết vào vendor. Với docker ta cũng sẽ làm tương tự như vậy, nhưng composer không cần cài đặt trên máy chủ mà sẽ được đặt vào một container trong docker. Container này sẽ chạy composer install vào thư mục trên máy ảo mà ta sẽ mount nó với chính project hiện tại.

docker run –rm -v $(pwd):/app composer/composer install

• docker run: Khởi tạo và chạy 1 container. Tương đương với việc tạo mới (create) và chạy (start) nó ngay lập tức

• –rm: Thông thường khi 1 container chạy xong và kết thúc. Hệ thống file cũng như volume tương ứng mà nó tạo ra sẽ còn được lưu lại (Để dễ debug chăng). Với option –rm, hệ thống file cũng như volume mà nó tạo ra sẽ được xóa khi container kết thúc (Nhưng image thì không). Với ý định chỉ install các lib cần thiết, mình nghĩ option này là phù hợp.

• -v $(pwd):/app: mount thư mục hiện tại vào thư mục /app trong container, là nơi composer mong muốn sẽ tìm thấy composer.json.

Note : Thực tế khi mình chạy lệnh này, mình có thêm sudo vì mình thấy có vấn đề về mount, và có lỗi không tìm thấy composer.json nếu không dùng.

Khi lệnh chạy hoàn tất, ta sẽ thấy folder vendor xuất hiện trong thư mục hiện tại. Như vậy các thư viện cần thiết cho laravel đã được tải xong. TIếp theo ta sẽ cài đặt môi trường webserver, database … cho project với docker-compose.

Bước 3 : Cài đặt môi trường docker với docker-compose

Ta sẽ tạo 4 file cài đặt sau đây :

1. docker-compose.yml: cài đặt các service chạy trong docker, mỗi service sẽ đảm nhiệm 1 chức năng như service về webserver, service về database…

2. app.dockerfile: đặc tả cài đặt cho service app được định nghĩa trong compose ở trên.

3. web.dockerfile: đặc tả cài đặt cho service web được định nghĩa trong compose ở trên. (ta sẽ đặt tên theo format .dockerfile)

4. vhost.conf: file cấu hình cho webservice nginx

3.1. Cài đặt cho service app -PHP-PFM :

Ta sẽ viết đoạn cài đặt sau vào docker-compose.yml:

version: ‘3’

services:

# The Application

app:

build:

context: ./

dockerfile: app.dockerfile

working_dir: /var/www

volumes:

– ./:/var/www/

Ý nghĩa :

• version 3: version của docker-compose, ở đây mình chọn là 3

• context: thư mục đặt dockerfile

• dockerfile: đặc tả cài đặt về service sẽ dùng image nào, trong container trạng thái sẽ có những thư mục nào được cài sẵn…

• working_dir: tương tự như đặc tả của docker run, thư mục được chọn trong container để chay các file binaries. Mặc định là root

• volumes: mount thư mục ./ (chứa source code) trên máy host vào /var/www trên container. Điều này cho phép chúng ta thay đổi source code khi container đang chạy runtime.

• app.dockerfile: Ta sẽ viết các lib cần thiết cho việc chạy code php vào đây.

FROM php:7.0.4-fpm

RUN apt-get update && apt-get install -y libmcrypt-dev

mysql-client libmagickwand-dev –no-install-recommends

&& pecl install imagick

&& docker-php-ext-enable imagick

&& docker-php-ext-install mcrypt pdo_mysql

3.2. Cài đặt cho service web – NGINX

Ta sẽ cần 1 web service để xử lý các request đến và đưa đến cho laravel xử lý. Ngoài nginx ta có thể chọn apache. Trong bài này, mình chọn nginx.

docker-compose.yml : chỉ định cài đặt web service

# The Web Server

web:

build:

context: ./

dockerfile: web.dockerfile

working_dir: /var/www

ports:

– 8080:80

Ý nghĩa:

• ports: – 8080:80: Ánh xạ cổng 8080 trên máy ảo vào cổng 80 trên container. Note : trong docker-compose version 2, option volumes_from có được sử dụng để trỏ volume giữa các services nhưng đến docker-compose 3 đã bị remove đi. Nên mình dùng option volume thay vào đó.

web.dockerfile : cài đặt cụ thể cho nginx

FROM nginx:1.10

ADD vhost.conf /etc/nginx/conf.d/default.conf

vhost.conf : cấu hình cho nginx

server {

listen 80;

index index.php index.html;

root /var/www/public;

location / {

try_files $uri /index.php?$args;

location ~ .php$ {

fastcgi_split_path_info ^(. .php)(/. )$;

fastcgi_pass app:9000;

fastcgi_index index.php;

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param PATH_INFO $fastcgi_path_info;

sendfile off;

3.3. Cài đặt cho service database – MYSQL

docker-compose.yml

# The Database

database:

image: mysql:5.6

volumes:

– dbdata:/var/lib/mysql

environment:

– “MYSQL_DATABASE=homestead”

– “MYSQL_USER=homestead”

– “MYSQL_PASSWORD=secret”

– “MYSQL_ROOT_PASSWORD=secret”

ports:

– “33061:3306”

volumes:

dbdata:

Ý nghĩa :

• image: mysql:5.6 So sánh với các service ở trên đều có 1 dockerfile đặc tả cài đặt cho nó thì service database này chỉ cần pull image mysql về là đủ. Các đặc tả cần thiết khác đều có sẵn trong image này nên ta sẽ không cần viết riêng.

• dbdata:/var/lib/mysql: dbdata là volume được chọn để lưu data sql (Là 1 volume riêng trong container, không phải mount với folder trong laravel như service app). Với ý nghĩa là volume mà các service khác sẽ cần dùng đến, ta sẽ cần định nghĩa nó riêng ở ngoài ở dòng cuối volumes: dbdata.

• enviroment: Các biến môi trường. Với định nghĩa như ở trên, mysql sẽ tạo cho chúng ta 1 database và 1 user như vậy. (Nếu không đặc tả thì sẽ chỉ có 1 user root và database mặc định của mysql)

docker-compose.yml tổng hợp

Như vậy đến đây ta sẽ đặc tả xong các file cần thiết cho docker-compose, ta sẽ có file docker-compose.yml như sau :

version: ‘3’

services:

# The Application

app:

build:

context: ./

dockerfile: app.dockerfile

working_dir: /var/www

volumes:

– ./:/var/www/

# The Web Server

web:

build:

context: ./

dockerfile: web.dockerfile

working_dir: /var/www

ports:

– 8080:80

# The Database

database:

image: mysql:5.6

volumes:

– dbdata:/var/lib/mysql

environment:

– “MYSQL_DATABASE=homestead”

– “MYSQL_USER=homestead”

– “MYSQL_PASSWORD=secret”

– “MYSQL_ROOT_PASSWORD=secret”

ports:

– “33061:3306”

volumes:

dbdata:

Như vậy việc đặc tả các file cài đặt đã hoàn tất. Tiếp theo trước khi đến khi chạy thử, ta sẽ khởi tạo 1 số dữ liệu cũng như key cho cần thiết cho laravel.

Chaỵ các service

Ta sẽ chạy các services trên bằng lệnh sau:

docker-compose up

(Ta có thể chọn option -d (detach) để tiến trình ẩn vào background khi hoàn tất).

Lần đầu chạy, command sẽ cần khoảng vài phút để pull về các image cần thiết. Nhưng lần thứ 2 trở đi nếu các chỉ định images không thay đổi thì thời gian chạy sẽ nhanh hơn nhiều do không phải tải lại các image nữa.

Đến đây ta sẽ cần chuẩn bị một số thiết lập cho laravel để project có thể sẵn sàng chạy được.

Thiết lập cho laravel

File enviroment: .env

cp .env-example .env

Generate key và optimze command:

docker-compose exec app php artisan key:generate

docker-compose exec app php artisan cache:clear

(Nếu bị lỗi không tìm thấy file .env thì hãy thử chạy với sudo)

docker-compose exec: với câu lệnh ở trên, ta thấy ý nghĩa sẽ là chạy  bên trong container của service âu>âu>

Option :
docker-compose exec app php artisan migrate –seed

Migrate database. Nếu chạy không lỗi với “migrate successful” ta có thể yên tâm rằng kết nối giữa app với database là đúng.

(Chú ý: nếu command trả về lỗi không tìm thấy file hoặc khi docker-compose exec app ls -lanhận thấy các folder không được mount đúng cách, cấu trúc folder trong container không giống với ở thư mục host, có thể các bạn cần lệnh sudo ở docker-compose run ở trên)

Đến đây app đã sẵn sàng được sử dụng! với đường dẫn: http://0.0.0.0:8080

Ảnh 21.

Tổng kết

Đến đây mình nghĩ đã hoàn thành setup cho môi trường phát triển.

VCCloud sưu tầm

Theo Kipalog

>> Xem thêm:  Post Views: 149

Previous Post

Google webmaster tools là gì?

Next Post

Socket là gì? Các loại Socket phổ biến hiện nay

Related Posts

Quicktime Player Logo650 1
macOS

Cách ghép video trên macOS bằng QuickTime Player

26/12/2021
Kali Linux 2021 4 700 1
Linux

Kali Linux 2021.4: Thêm 9 công cụ mới và hỗ trợ tốt hơn cho Apple M1

26/12/2021
Openbsd La Gi 1
Linux

OpenBSD là gì? Đây là mọi thứ bạn cần biết về hệ điều hành này!

26/12/2021
Mac Os Xoa Ung Dung Cai Dat Logo640 1
macOS

Cách gỡ, xóa ứng dụng trên Mac OS

26/12/2021
Tim Thu Vien Anh Photos Library Tren May Mac700 1
macOS

Hướng dẫn tìm thư viện ảnh Photos Library trên máy Mac

26/12/2021
So Sanh Macbook Pro Macbook Air Va Ipad Pro 1
macOS

So sánh MacBook Pro 13 inch với MacBook Air và iPad Pro

26/12/2021
Next Post
Socket Là Gì? Các Loại Socket Phổ Biến Hiện Nay 60902c2dd7cdb.jpeg

Socket là gì? Các loại Socket phổ biến hiện nay

Bài mới nhất

Tổng Hợp 10 Mẫu Email Marketing Giới Thiệu Sản Phẩm Nổi Bật Nhất Hiện Nay 612d0da97658c.png

Tổng hợp 10 mẫu email marketing giới thiệu sản phẩm nổi bật nhất hiện nay

07/05/2025
Dịch Vụ Thiết Kế Website Tại Hải Dương Chuyên Nghiệp, ấn Tượng Và Uy Tín 612d25752b14f.png

Dịch vụ thiết kế website tại Hải Dương chuyên nghiệp, ấn tượng và uy tín

06/05/2025
Top Công Ty Thiết Kế Website Tại Biên Hòa Chuyên Nghiệp, Chuẩn Seo 612d259494e93.jpeg

Top công ty thiết kế website tại Biên Hòa chuyên nghiệp, chuẩn SEO

06/05/2025
Top Công Ty Thiết Kế Website Tại Vinh – Nghệ An Uy Tín 612d259a9cae3.jpeg

Top công ty thiết kế website tại Vinh – Nghệ An uy tín

05/05/2025
Top 10 Công Ty Thiết Kế Website Tại Nha Trang Chuyên Nghiệp 612d0a9ad018b.jpeg

Top 10 công ty thiết kế website tại Nha Trang chuyên nghiệp

05/05/2025

Danh mục

  • Android
  • Bảo mật máy tính
  • Bảo mật, Antivirus
  • Chuyện công nghệ
  • Deep Learning
  • Development
  • Dịch vụ công trực tuyến
  • Dịch vụ nhà mạng
  • Giải pháp bảo mật
  • Hệ thống
  • Hệ thống
  • iPhone
  • Kiến thức bảo mật
  • Kiến thức cơ bản phổ thông
  • Kiến thức Marketing căn bản
  • Kiến thức tổng hợp
  • Lập trình
  • Linux
  • Linux OS
  • macOS
  • Mail Server
  • Mạng LAN – WAN
  • Máy ảo
  • Máy chủ
  • ms excel
  • ms-powerpoint
  • Nền tảng điện toán đám mây
  • Phần cứng
  • Phần Mềm
  • Quản trị hệ thống
  • Raspberry Pi
  • Sửa lỗi máy tính
  • Tăng tốc máy tính
  • Thủ thuật
  • Thủ thuật SEO
  • Thủ thuật Wifi
  • Tiện ích hệ thống
  • Tin học văn phòng
  • Tin tức
  • Uncategorized
  • Ứng dụng
  • Website
  • Windows Server 2012

Thẻ

#app #chatbot #chatbot tự động #CRM #Kiến thức cơ bản #Techblog #Thiết kế website Android apple CPU Email Marketing Google Google Drive hacker HTML hàm python hàm python có sẵn hình nền hình nền máy tính học css học python học SQL ios iphone iphone 12 iPhone X macos Microsoft mssql MS SQL Server ngôn ngữ lập trình python Raspberry Pi Samsung smartphone SQL SQL Server tham số trong C thủ thuật windows 10 tài liệu python windows windows 10 YouTube điện thoại thông minh ứng dụng
  • About
  • Advertise
  • Privacy & Policy
  • Contact

© 2022 Pha Le Solution

No Result
View All Result
  • Home

© 2022 Pha Le Solution