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 One to Many Eloquent Relationship

Laravel One to Many Eloquent Relationship

One to Many Relationship được sử dụng trong trường hợp một dữ liệu của một bảng được liên kết với một hoặc nhiều dữ liệu ở bảng khác. Ví dụ, một bài post có thể có nhiều comment. Vì vậy, trong hướn...

Laravel Socialite Login With Github

Laravel Socialite Login With Github

GitHub GitHub là một nền tảng phát triển phần mềm trực tuyến. Nó được sử dụng để lưu trữ, theo dõi và cộng tác trong các dự án phần mềm. Nó giúp các nhà phát triển dễ dàng chia sẻ các tập tin mã...

Csv import with Validation for Laravel

Csv import with Validation for Laravel

Trong một bài viết lúc trước, mình đã chia sẻ đến các bạn cách xây dựng một service import và export CSV sử dụng Facades, nếu có bạn nào không biết hoặc đã quên các bạn có thể tham khảo lại bài viết t...

Laravel View

Laravel View

View là gì? Đây là phần giao diện (theme) dành cho người sử dụng. Nơi mà người dùng có thể lấy được thông tin dữ liệu của MVC thông qua các thao tác truy vấn như tìm kiếm hoặc sử dụng thông qua các...

Laravel Upload File Using Trait

Laravel Upload File Using Trait

Hiện nay, đa số các dự án đều có chức năng upload file, nên tôi đã thử xây dựng một lớp Trait Upload File, để chúng ta dễ dàng sao chép qua các dự án khác để sử dụng, nhằm rút ngắn thời gian phát triể...

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

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 Queue Workers With Systemd

Laravel Queue Workers With Systemd

Systemd chủ yếu được sử dụng để quản lý các service trên môi trường Linux, nhưng nó cũng cho phép chúng ta quản lý các service với quyền không phải là root. Điều này, làm cho systemd trở thành một giả...

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

ManhDanBlogs