Zsh

Zsh viết tắt của “Z Shell” là một shell nâng cao cho hệ thống Unix và Linux.

Nó được phát triển nhằm cung cấp các tính năng và khả năng cao hơn so với shell mặc định trên hầu hết các hệ thống Unix.

Zsh kết hợp những tính năng mạnh mẽ của các shell trước đó như Bash, Ksh và cung cấp nhiều tiện ích và khả năng tùy chỉnh.

Zsh Artisan

Zsh Artisan là một plugin hỗ trợ bạn trong việc chạy lệnh artisan trong dự án Laravel. Với tính năng auto-completion và có thể tự động mở tập tin được tạo bởi Artisan.

Bạn có thể tim hiểu thêm tại đây: https://github.com/jessarcher/zsh-artisan

Hướng dẫn cài đặt Zsh Artisan trong Docker

Create Dockerfile

Dockerfile là một tập tin văn bản không có phần mở rộng tập tin, chứa tất cả các lệnh mà người dùng có thể gọi trên dòng lệnh để tạo một Image.

Trong bài hướng dẫn này, tôi sử dụng Image webdevops/php-nginx-dev:8.2 để cài đặt plugin Zsh Artisan và nội dung Dockerfile của tôi như sau:

FROM webdevops/php-nginx-dev:8.2

# Install zsh, git, and curl
RUN apt-get update \
    && apt-get install -y zsh git curl

# Switch to the application user
USER application

# Install Oh-my-zsh for application user
RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended

# Install Powerlevel10k theme
RUN git clone --depth=1 https://github.com/romkatv/powerlevel10k.git /home/application/.oh-my-zsh/custom/themes/powerlevel10k

# Switch back to root
USER root

# Install zsh-artisan
RUN git clone https://github.com/jessarcher/zsh-artisan.git /home/application/.oh-my-zsh/custom/plugins/artisan

# Enable zsh-artisan plugin and set Powerlevel10k theme in .zshrc
RUN sed -i 's/^ZSH_THEME=.*/ZSH_THEME="powerlevel10k\/powerlevel10k"/' /home/application/.zshrc && \
    sed -i 's/plugins=(/plugins=(artisan /' /home/application/.zshrc && \
    echo 'POWERLEVEL9K_DISABLE_CONFIGURATION_WIZARD=true' >> /home/application/.zshrc

# Add alias for php artisan
RUN echo "alias artisan='php artisan'" >> /home/application/.zshrc

# Switch back to application user to apply changes
USER application

Sử dụng Dockerfile trong docker-compose.yml

version: "3"
services:
  manhdan:
    build:
      context: ./
      dockerfile: Dockerfile
    container_name: [example: manhdan]
    environment:
      - PHP_DISPLAY_ERRORS=1
      - PHP_DATE_TIMEZONE=Asia/Tokyo
      - WEB_DOCUMENT_ROOT=/app/public
      - COMPOSER_VERSION=2
    networks:
      - docker-net
    volumes:
      - ../httpdocs:/app
      - ./custom.conf:/opt/docker/etc/nginx/vhost.common.d/custom.conf
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.manhdan.tls=true"
      - "traefik.http.routers.manhdan.rule=Host(`manhdandev.com`)"
      - "traefik.http.routers.manhdan.entrypoints=websecure"
networks:
  docker-net:
    external: true

Build Container

Sau khi đã tạo xong Dockerfiledocker-compose.yml, chúng ta sẽ khởi tạo Container bằng lệnh sau:

docker compose up -d --build

Run Docker exec

Sau khi khởi tạo xong Container, chúng ta có thể sử dụng lệnh docker exec để khởi tạo một phiên làm việc tương tác mới trong Container.

Điều này cho phép chúng ta truy cập và tương tác trực tiếp với Container:

docker exec -ti -u 1000:1000 [container_name] /bin/zsh

Kết quả của công việc bạn đã làm đang chờ bạn khám phá!

Sau khi đã hoàn thành các bước trên, giờ là lúc để chúng ta sẽ cùng nhau khám phá thành quả công sức của mình.

Chúng ta cần phải vào thư thư mục chứa source Laravel bằng lệnh sau:

cd folder_laravel

Bạn hãy chạy lệnh sau để xem để xem thành quả của mình:

artisan + tab

Đây chính là thành quả của chúng ta sau khi thực hiện các bước ở phía trên 🤤🤤🤤🏆🍨🍨🍨.

CÓ THỂ BẠN QUAN TÂM

Laravel Facades

Laravel Facades

Facade là gì? Chúng ta có thể hiểu Facade là mặt tiền và mặt trước của một tòa nhà hay bất cứ thứ gì. Tầm quan trọng của Facade là chúng có thể dễ nhận thấy và nổi bật hơn, tương tự như vậy, thì...

Laravel Has Many Through Eloquent Relationship

Laravel Has Many Through Eloquent Relationship

Has Many Through Relationship hơi phức tạp để hiểu một cách đơn giản, nó sẽ cung cấp cho chúng ta một con đường tắt để có thể truy cập dữ liệu của một quan hệ xa xôi thông qua một mối quan hệ trung gi...

Document Laravel API With OpenAPI (Swagger)

Document Laravel API With OpenAPI (Swagger)

Swagger là gì? Swagger là một Ngôn ngữ mô tả giao diện để mô tả các API RESTful được thể hiện bằng JSON. Swagger được sử dụng cùng với một bộ công cụ phần mềm mã nguồn mở để thiết kế, xây dựng, l...

How To Optimize Your Site With GZIP Compression

How To Optimize Your Site With GZIP Compression

GZIP là công nghệ nén thường được sử dụng để truyền dữ liệu một cách nhanh chóng qua Insternet. Hiện nay, GZIP là một tiêu chuẩn để nén các file trên trang web, đa số các website hiện nay hơn 99% sử d...

Laravel 9 REST API With Sanctum Authentication

Laravel 9 REST API With Sanctum Authentication

Laravel Sanctum Laravel Sanctum cung cấp một hệ thống authentication đơn giản cho các SPA, ứng dụng Mobile và API đơn giản sử dụng token. Sanctum cho phép ứng dụng của bạn phát hành các mã token...

Laravel Model

Laravel Model

Model là gì? Trong mô hình MVC, chữ “M” viết tắt là Model, Model dùng để xử lý logic nghiệp vụ trong bất kì ứng dụng dựa trên mô hình MVC. Trong Laravel, Model là lớp đại diện cho cấu trúc logic và...

Laravel UI Password Reset Expired

Laravel UI Password Reset Expired

Trong thư viện laravel/ui, thì chức năng password reset dù cho token có hết hạn thì vẫn có truy cập vào trang password reset, đến khi bạn submit form thì mới thông báo là token đã hết hạn. Nhưng có mộ...

Integrating CKEditor 5 in Laravel 10 using Vite

Integrating CKEditor 5 in Laravel 10 using Vite

CKEditor 5CKEditor 5 là một trình soạn thảo văn bản phong phú JavaScript với nhiều tính năng và khả năng tùy chỉnh. CKEditor 5 có kiến trúc MVC hiện đại, mô hình dữ liệu tùy chỉnh và DOM ảo, mang...

Integrating elFinder into TinyMCE 6 in Laravel

Integrating elFinder into TinyMCE 6 in Laravel

TinyMCE TinyMCE là một trình soạn thảo WYSIWYG được xây dựng trên nền tảng Javascript, được phát triển dưới dạng mã nguồn mở theo giấy phép MIT bởi Tiny Technologies Inc. TinyMCE cho phép người d...

ManhDanBlogs