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 Many to Many Polymorphic Relationship

Laravel Many to Many Polymorphic Relationship

Many to many Polymorphic Relationship cũng hơi phức tạp để hiểu. Ví dụ: nếu bạn có bài post, video và tag, bạn cần kết nối với nhau theo yêu cầu là mọi bài đăng đều có nhiều tag và video cũng như vậy....

Integrating OpenAI in Laravel

Integrating OpenAI in Laravel

OpenAI OpenAI là một phòng thí nghiệm nghiên cứu trí tuệ nhân tạo (AI) của Mỹ bao gồm tổ chức phi lợi nhuận OpenAI Incorporated (OpenAI Inc.) và công ty con hoạt động vì lợi nhuận OpenAI Limited Par...

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...

Integrating elFinder Into CKEditor 5 In Laravel

Integrating elFinder Into CKEditor 5 In Laravel

CKEditor 5 CKEditor 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...

Laravel User Authentication

Laravel User Authentication

Trong hướng dẫn này, tôi sẽ hướng dẫn bạn xây dựng chức năng đăng nhập trong Laravel. Công bằng mà nói thì bạn có thể sử dụng Laravel UI hoặc JetStream để tự động tạo ra chức năng đăng nhập trong Lara...

How to insert into a database at lightning speed?

How to insert into a database at lightning speed?

Trong quá trình thực hiện dự án cho công ty, một trong những yêu cầu đặt ra là import dữ liệu từ file CSV (chứa dữ liệu từ hệ thống cũ) vào cơ sở dữ liệu MySQL của hệ thống mới. Do sự thay đổi cấu...

Defer in Laravel: Push Tasks to the Background

Defer in Laravel: Push Tasks to the Background

Deferred Functions trong Laravel Các phiên bản Laravel trước version 11, chúng ta thường sử dụng Queued Jobs cho phép thực hiện sắp xếp các tác vụ xử lý background . Nhưng đôi khi có những tác v...

Export CSV from SQL Server - Import into MySQL with Laravel

Export CSV from SQL Server - Import into MySQL with Laravel

Transfer Database Trong quá trình phát triển và bảo trì dự án, việc di chuyển cơ sở dữ liệu từ hệ thống này sang hệ thống khác là một nhiệm vụ khá phổ biến. Giả sử bạn cần di chuyển dữ liệu từ SQ...

Laravel Migration

Laravel Migration

Migration cho phép các nhà phát triển (Developer) nhanh chóng tạo ra cở sở dữ liệu của ứng dụng mà không cần vào màn hình quản lý cơ sở dữ liệu hay chạy bất kì một câu lệnh SQL nào. Trước hết, nếu...

ManhDanBlogs