Saturday, November 23, 2024

Triển khai Snipe-it bằng Docker chỉ 1 cái Enter

-

1. Tổng quan.

Snipe-IT là một phần mềm quản lý tài sản mã nguồn mở (open source) được sử dụng để theo dõi và quản lý tài sản vật lý, như máy tính, thiết bị mạng, phần mềm, linh kiện, và nhiều hơn nữa. Snipe-IT giúp tổ chức có thể quản lý tài sản một cách hiệu quả, từ việc ghi nhận thông tin, trạng thái, địa điểm đến lịch sử sử dụng và bảo trì.

Docker là một nền tảng ảo hóa cấp cao (containerization platform) cho phép bạn đóng gói và chạy ứng dụng cùng với các phụ thuộc của chúng trong một môi trường độc lập gọi là container. Mỗi container hoạt động như một môi trường cô lập, đảm bảo tính nhất quán và độ tin cậy của ứng dụng khi chạy trên nhiều hệ điều hành và môi trường khác nhau.

Triển khai Snipe-IT bằng Docker mang lại một số lợi ích quan trọng như sau:

  • Dễ dàng triển khai: Docker cho phép đóng gói ứng dụng Snipe-IT cùng với tất cả các phụ thuộc của nó vào một container duy nhất. Điều này giúp giảm thiểu các vấn đề liên quan đến cài đặt và cấu hình, và giúp bạn triển khai Snipe-IT nhanh chóng trên môi trường của mình.
  • Độc lập với môi trường: Snipe-IT và các phụ thuộc của nó được đóng gói trong một container Docker, tách biệt hoàn toàn với hệ thống host. Điều này giúp đảm bảo rằng môi trường Snipe-IT hoạt động như mong muốn, không bị ảnh hưởng bởi các yếu tố khác trong hệ thống.
  • Dễ dàng di động: Với Docker, bạn có thể di chuyển và triển khai Snipe-IT trên nhiều hệ thống và môi trường khác nhau một cách dễ dàng. Container Docker đảm bảo tính di động và khả năng nhất quán của ứng dụng, giúp bạn dễ dàng chuyển đổi giữa các môi trường phát triển, thử nghiệm và sản xuất.
  • Quản lý tài nguyên hiệu quả: Docker cho phép bạn quản lý tài nguyên của Snipe-IT một cách hiệu quả. Bạn có thể chỉ định số lượng tài nguyên (bộ nhớ, CPU, lưu trữ) được cung cấp cho container Snipe-IT, điều này giúp tối ưu hóa hiệu suất và sử dụng tài nguyên.
  • Cộng đồng sôi nổi: Snipe-IT và Docker đều có cộng đồng lớn, năng động và sôi nổi. Bạn có thể tìm thấy nhiều tài liệu hướng dẫn, tài nguyên, và hỗ trợ từ cộng đồng Docker và Snipe-IT để giúp bạn triển khai và quản lý Snipe-IT một cách dễ dàng và hiệu quả.

Như vậy việc triển khai Snipe-IT bằng Docker mang lại sự tiện lợi, di động, và quản lý tài nguyên hiệu quả. Đồng thời, nó giúp bạn dễ dàng triển khai và quản lý Snipe-IT trên nhiều môi trường khác nhau một cách nhất quán và tin cậy.

2. Triển khai.

Để triển khai Snipe-IT bằng Docker, bạn cần thực hiện các bước sau:

Bước 1 – Cài đặt Docker từ hướng dẫn https://wiki.hoanghd.com/cai-dat-docker-tren-ubuntu/.

Bước 2 – Cài đặt Docker Compose từ hướng dẫn https://wiki.hoanghd.com/cai-dat-docker-compose-tren-ubuntu/.

Bước 3 – Tạo file script.

Mình sẽ dùng vi snipe-it.sh và dán nội dung dưới vào file này.

#!/bin/bash
cat > docker-compose.yml << 'OEF'
version: '3'
services:
  snipe-mysql:
    container_name: snipe-mysql
    image: mysql:5.6
    env_file:
      - ./.env
    volumes:
      - snipesql-vol:/var/lib/mysql
    command: --default-authentication-plugin=mysql_native_password
    expose:
      - "3306"
  snipe-it:
    container_name: snipe-server
    image: snipe/snipe-it
    env_file:
      - ./.env
    ports:
      - "80:80"
    depends_on:
      - snipe-mysql
volumes:
  snipesql-vol:
OEF

cat > ./.env << 'OEF'
# Mysql Parameters
MYSQL_PORT_3306_TCP_ADDR=snipe-mysql
MYSQL_PORT_3306_TCP_PORT=3306
MYSQL_ROOT_PASSWORD=Hoanghd164
MYSQL_DATABASE=snipeit
MYSQL_USER=hoanghd
MYSQL_PASSWORD=Hoanghd164

# Email Parameters
MAIL_PORT_587_TCP_ADDR=smtp.hoanghd.com
MAIL_PORT_587_TCP_PORT=587
MAIL_ENV_FROM_ADDR=hoanghd@hoanghd.com
MAIL_ENV_FROM_NAME=Ha Dang Hoang
MAIL_ENV_USERNAME=hoanghd
MAIL_ENV_PASSWORD=Hoanghd164

# Snipe-IT Settings
APP_ENV=production
APP_DEBUG=false
APP_KEY={{INSERT_API_TOKEN}}
APP_URL=http://localhost
APP_TIMEZONE=Asia/Ho_Chi_Minh 
APP_LOCALE=vi
OEF

sed -i "s#APP_URL=.*#APP_URL=http://$1#" ./.env
docker-compose up -d
sleep 5
api_token=$(docker exec -it snipe-server sh -c 'php artisan key:generate --show' | sed -e 's/\x1b\[[0-9;]*m//g' | tr -d '\r')
sed -i "s#APP_KEY=.*#APP_KEY=$api_token#" ./.env
cat ./.env
docker-compose down && docker-compose up -d --build

Script trên là một tập tin shell script, được sử dụng để triển khai Snipe-IT bằng Docker thông qua việc tạo và cấu hình các container Docker và các biến môi trường cần thiết.

Dưới đây là giải thích ý nghĩa của từng phần trong script:

  • Đoạn đầu tiên tạo file docker-compose.yml:
    • Tạo một file docker-compose.yml để định nghĩa cấu hình cho các service Snipe-IT và MySQL.
    • Service snipe-mysql sử dụng image MySQL phiên bản 5.6, định cấu hình biến môi trường từ file .env, và lưu trữ dữ liệu MySQL trong một volume được gọi là snipesql-vol.
    • Service snipe-it sử dụng image Snipe-IT, định cấu hình biến môi trường từ file .env, mở cổng 80 để truy cập vào Snipe-IT và phụ thuộc vào service snipe-mysql.
  • Tiếp theo, tạo file .env để định cấu hình các biến môi trường:
    • Điều chỉnh các giá trị trong file .env để cấu hình Snipe-IT và MySQL.
    • Các giá trị được lưu trữ trong file .env bao gồm thông tin cấu hình MySQL, thông tin cấu hình email, và các cài đặt Snipe-IT.
  • Dòng lệnh sed thay đổi giá trị APP_URL trong file .env:
    • Lệnh này sẽ thay thế giá trị APP_URL trong file .env bằng giá trị được chuyển đến như một đối số khi chạy script.
  • Dòng lệnh docker-compose up -d:
    • Lệnh này sẽ chạy các container Snipe-IT và MySQL từ file docker-compose.yml và các biến môi trường từ file .env trong chế độ nền (-d).
  • Dòng lệnh sleep 5:
    • Lệnh này dừng script trong 5 giây để đảm bảo rằng container đã khởi động và sẵn sàng để thực hiện các lệnh tiếp theo.
  • Dòng lệnh để tạo APP_KEY và cập nhật lại file .env:
    • Lệnh này sẽ thực thi lệnh php artisan key:generate --show bên trong container snipe-server để tạo ra APP_KEY (API Token) cho Snipe-IT.
    • Sau đó, giá trị APP_KEY mới này được cập nhật lại vào file .env để Snipe-IT có thể sử dụng.
  • Dòng lệnh cat ./.env:
    • Lệnh này in ra nội dung của file .env sau khi đã cập nhật.
  • Dòng lệnh docker-compose down && docker-compose up -d --build:
    • Lệnh này dừng và xóa các container hiện tại và sau đó tạo lại và chạy lại các container từ đầu, bao gồm việc xây dựng lại image nếu có thay đổi trong Dockerfile hoặc các thành phần liên quan.

Tổng quan, script này tạo ra các container Docker Snipe-IT và MySQL, cấu hình biến môi trường, và cập nhật APP_KEY cho Snipe-IT, cho phép bạn triển khai Snipe-IT một cách tự động và dễ dàng sử dụng Docker Compose.

Bước 4 – Chạy script trên.

Đầu tiên hãy phân quyền thực thi cho file snipe-it.sh.

chmod +x snipe-it.sh

Tiếp theo bạn hãy chạy script trên và truyền đối số đầu tiên là IP của server, ví dụ dưới IP 192.168.1.209 chính là IP của chính Server Snipe-IT mà bạn định triển khai.

./snipe-it.sh 192.168.1.209

Bước 5 – Truy cập Snipe-IT bằng trình duyệt.

Sử dụng url chúng ta đã khai báo ở biến APP_URL=http://192.168.13.209 để truy cập vào GUI của Snipe-IT.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories