EasyEngine trong Contianer – chạy trên bất kỳ bản phân phối Linux nào

Tạo một container EasyEngine, cho phép bạn triển khai và sử dụng EasyEngine trên mọi bản phân phối Linux, không chỉ giới hạn ở Debian/Ubuntu như mặc định.

Hoạt động tốt trên các hệ điều hành như:

  • CentOS, RHEL, AlmaLinux
  • Arch, OpenSUSE, Fedora
  • Các hệ điều hành tối giản hoặc tập trung cho container như: Fedora CoreOS, OpenSUSE Leap Micro, Alpine, v.v.

Yêu cầu hệ thống

Máy của bạn cần đã cài đặt và chạy Docker

Kiểm tra Docker bằng lệnh:

docker version

Nếu chưa cài đặt, bạn có thể xem hướng dẫn chính thức tại: 👉 https://docs.docker.com/get-docker/

Cách triển khai

Chạy lệnh sau để khởi động container EasyEngine:

docker run -it --rm --privileged \
  -v /var/run/docker.sock:/var/run/docker.sock:z \
  -v /var/lib/docker/volumes:/var/lib/docker/volumes \
  -v /opt/easyengine:/opt/easyengine \
  -v /etc/localtime:/etc/localtime:ro \
  --network host \
  --name ee-container \
  dinhngocdung/easyengine:latest

Giải thích nhanh các tham số:

Tham sốÝ nghĩa
--privilegedCho phép container tương tác với Docker trên máy chủ
--rmXóa container ngay khi bạn thoát ra
-v /var/run/docker.sockKết nối Docker bên trong container với Docker của máy chủ
-v /opt/easyengineLưu trữ dữ liệu cấu hình và website của EasyEngine trên máy chủ
--network hostSử dụng mạng của host để đảm bảo web/db hoạt động bình thường
-v /etc/localtime:...Đồng bộ thời gian với host

Cách sử dụng

Khi đã vào bên trong container (ee-container), bạn có thể sử dụng các lệnh EasyEngine như bình thường.

Ví dụ lệnh:

ee site create example.com --type=wp
ee site list
ee site disable example.com
ee site delete example.com

Để thoát khỏi container, gõ:

exit

Sau khi thoát, container sẽ được xóa tự động. Tuy nhiên, tất cả dữ liệu EasyEngine và website vẫn được giữ nguyên trên máy chủ tại thư mục /opt/easyengine.

Sử dụng lại EasyEngine

Mỗi khi cần dùng EasyEngine, chỉ cần chạy lại lệnh docker run ở trên để khởi động container mới.

Đồng bộ/Sao chép (Sync/Clone)

Các lệnh Sync/Clone được thiết kế để tương tác giữa các cài đặt EasyEngine trực tiếp trên host. Để các lệnh này hoạt động với ee-container, bạn cần thực hiện các bước sau:

ee-container cục bộ

  1. Sử dụng một khóa kết nối chuyên dụng, khác với khóa chính, để truy cập host nhằm đảm bảo vẫn kiểm soát được host.
    ssh-keygen -t ed25519 -f ~/.ssh/id_ee_container
    ssh-copy-id -i ~/.ssh/id_ee_container.pub YOUR-USER@YOUR-REMOTE-SERVER.com
    ssh -i ~/.ssh/id_ee_container YOUR-USER@YOUR-REMOTE-SERVER.com
  2. Sử dụng ssh-key mới trong ee-container cục bộ:
    # Chép tạm vào ee-container
    sudo cp ~/.ssh/id_ee_container /opt/easyengine/
    
    # Sử dụng ssh-key
    cp /opt/easyengine/id_ee_container ~/.ssh/id_ed25519

Nếu sử dụng EasyEngine trực tiếp trên host:

echo "Host YOUR-REMOTE-SERVER.com
    HostName YOUR-REMOTE-SERVER.com
    User YOUR-USER
    IdentityFile ~/.ssh/id_ee_container
    IdentitiesOnly yes" >> ~/.ssh/config

Host của ee-container từ xa

  1. Tạo một Bash Script /usr/local/bin/ssh_to_ee_container.sh để chuyển tiếp các lệnh sshrsync:
    #!/bin/bash
    
    # Tên của container Docker bạn muốn kết nối
    CONTAINER_NAME="ee-container"
    
    # Kiểm tra nếu có lệnh được truyền vào từ SSH_ORIGINAL_COMMAND
    if [ -n "$SSH_ORIGINAL_COMMAND" ]; then
        docker exec -i "$CONTAINER_NAME" /bin/bash -c "$SSH_ORIGINAL_COMMAND"
    else
        if [ -n "$SSH_TTY" ]; then
            docker exec -it "$CONTAINER_NAME" /bin/bash
        else
            docker exec -i "$CONTAINER_NAME" /bin/bash
        fi
    fi
  2. Chỉnh sửa ~/.ssh/authorized_keys trên host từ xa để chạy ssh_to_ee_container.sh khi truy cập bằng ssh-key:
    vi ~/.ssh/authorized_keys
    Chèn command="/usr/local/bin/ssh_to_ee_container.sh" trước ssh-...
    command="/usr/local/bin/ssh_to_ee_container.sh" ssh-ed25519 AAAAB3NzaC1yc2EAAAADAQABAAABAQ... your_key_comment_or_email

Tham khảo

Lần cuối cập nhật lúc