+3

Triển khai một Ứng dụng Rails lên máy chủ Dokku

Giới thiệu

Triển khai một ứng dụng Rails có rất nhiều cách khác nhau, có nhiều nền tảng và công cụ hổ trợ cho việc này. Một trong những cách đó là deploy ứng dụng ứng dụng rails lên một máy chủ được cài đặt Dokku mà mình hay sử dụng đối với khách hàng vừa và nhỏ ở TakeIT Vietnam. Bài viết này sẽ cung cấp một tổng quan ngắn gọn về Dokku và cách triển khai một ứng dụng Rails lên máy chủ được cài đặt Dokku một cách dễ dàng.

Dokku là gì?

Nếu bắt buộc phải thích một cách ngắn gọn về Dokku thì có thể mô tả Dokku là một dự án mã nguồn mở Platform as a Service thay thế cho Heroku. Dokku tận dụng sức mạnh của Docker để có thể triển khai trên nhiều loại phần cứng và trên các máy chủ giá rẻ. Bạn hoàn toàn có thể tự kiểm soát máy chủ của bạn và tận hưởng các tính năng nổi bật tương tự như Heroku. Ngoài ra, Dokku hổ trợ khá nhiều plugin giúp bạn triển khai đa dạng ứng dụng hơn.

Triển khai một Ứng dụng Rails

Quy trình triển khai một ứng dụng Rails lên máy chủ Dokku rất đơn giản. Đầu tiên, bạn sẽ cần phải cài đặt CLI Dokku, đó là một giao diện dòng lệnh để quản lý và triển khai các ứng dụng. Sau khi cài đặt, bạn có thể sử dụng CLI để triển khai ứng dụng của bạn bằng cách tạo một ứng dụng Dokku và sau đó đẩy mã của bạn lên ứng dụng. Chúng ta hãy đi từng bước nhé.

  1. Yêu cầu cấu hình tối thiểu

    Một hệ điều hành được cài mới theo danh sách bên dưới:

    Máy chủ có một trong các kiến trúc sau:

    • AMD64 (được biết đến cũng như x86_64), Được sử dụng phổ biến cho máy chủ đám mây của Intel.
    • ARMV7 (được biết đến cũng như armhf), Được sử dụng thông dụng cho Raspberry PI.
    • ARMV8 (được biết đến cũng như arm64), Được sử dụng phổ biến cho Raspberry PI và AWS Graviton.

    Để tránh máy chủ quá tải và xảy ra các lỗi không mong muốn trong quá trình sử dụng:

    • Máy chủ cần ít nhất 1GB Ram
      • Nếu máy chủ ít hơn 1GB Ram thì hãy tạo swap cho máy chủ của bạn:

        cd /var
        touch swap.img
        chmod 600 swap.img
        
        dd if=/dev/zero of=/var/swap.img bs=1024k count=1000
        mkswap /var/swap.img
        swapon /var/swap.img
        free
        
        echo "/var/swap.img    none    swap    sw    0    0" >> /etc/fstab
        

    Cuối cùng là một tên miền, điều này là không bắt buộc. Tuy nhiên, sử dụng tên miền sẽ giúp ứng dụng của bạn có thể truy cập một cách dễ dàng hơn là một địa chỉ IP.

  2. Cài đặt Dokku lên máy chủ

    Cài đặt Dokku bằng file bootstrap

    wget https://dokku.com/install/v0.29.4/bootstrap.sh #0.29.4 là phiên bản cài đặt
    sudo DOKKU_TAG=v0.29.4 bash bootstrap.sh 
    

    Thiết lập SSH key và Virtualhost

    # usually your key is already available under the current user's `~/.ssh/authorized_keys` file
    cat ~/.ssh/authorized_keys | dokku ssh-keys:add admin
    
    # you can use any domain you already have access to
    # this domain should have an A record or CNAME pointing at your server's IP
    dokku domains:set-global dokku.me
    
    # you can also use the ip of your server
    dokku domains:set-global 10.0.0.2
    
  3. Triển khai một ứng dụng Rails

    Sau khi hoàn thành cài đặt Dokku lên server, chúng ta sẽ bắt đầu triển khai một ứng dụng rails cơ bản theo các bước sau:

    Trong ví dụ này, chúng ta sẽ dùng repo the Heroku Ruby on Rails "Getting Started" app để triển khai.

    Clone source code từ git repository về máy chủ.

    # from your local machine
    # SSH access to github must be enabled on this host
    git clone https://github.com/heroku/ruby-getting-started
    

    Tạo một ứng dụng trên Dokku

    # on the Dokku host
    dokku apps:create ruby-getting-started
    

    Mặc định, Dokku sẽ không cung cấp các database được cài đặt sẵn mà chúng ta phải cài đặt thông qua các Plugin. Bạn có thể truy cập danh sách các Plugins hiện có từ trang chủ của Dokku, ở đây mình sẽ dùng Postgres nên sẽ cài đặt plugin Postgres được cung cấp từ Dokku

    # on the Dokku host
    # install the postgres plugin
    # plugin installation requires root, hence the user change
    sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git
    

    Tạo một database mới

    # create a postgres service with the name railsdatabase
    dokku postgres:create railsdatabase
    

    Liên kết ứng dụng đã tạo trước đó với database vừa tạo.

    Bằng cách liên kết ứng dụng và database, Dokku sẽ tạo ra một biến môi trường là DATABASE_URL trên ứng dụng Dokku.

    # on the Dokku host
    # each official datastore offers a `link` method to link a service to any application
    dokku postgres:link railsdatabase ruby-getting-started
    

    Thực hiện deploy app ruby-getting-started lên Dokku server. Tất cả những gì bạn cần làm là thêm remote vào git và push source code vào git repository của Dokku.

    # from your local machine
    # the remote username *must* be dokku or pushes will fail
    cd ruby-getting-started
    git remote add dokku dokku@dokku.me:ruby-getting-started
    git push dokku main:master
    

    Sau khi chạy lệnh git push dokku main:master, bạn sẽ nhận được ouput gần giống như bên dưới đây.

    Counting objects: 231, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (162/162), done.
    Writing objects: 100% (231/231), 36.96 KiB | 0 bytes/s, done.
    Total 231 (delta 93), reused 147 (delta 53)
    -----> Cleaning up...
    -----> Building ruby-getting-started from herokuish...
    -----> Adding BUILD_ENV to build environment...
    -----> Ruby app detected
    -----> Compiling Ruby/Rails
    -----> Using Ruby version: ruby-2.2.1
    -----> Installing dependencies using 1.9.7
           Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
           Fetching gem metadata from https://rubygems.org/...........
           Fetching version metadata from https://rubygems.org/...
           Fetching dependency metadata from https://rubygems.org/..
           Using rake 10.4.2
    
    ...
    
    =====> Application deployed:
           http://ruby-getting-started.dokku.me
    

Tổng kết

Cài đặt một ứng dụng Rails lên máy chủ Dokku là một cách tuyệt vời để nhanh chóng và dễ dàng triển khai một ứng dụng. Với một vài câu lệnh là bạn đã có một ứng dụng của mình hoạt động trong thời gian ngắn. Ngoài ra những câu lệnh đơn giản bên trên, Dokku còn có thể làm được nhiều việc hơn với các cấu hình nâng cao, các plugin được cung cấp bởi Dokku và cộng đồng cũng làm cho Dokku ngày càng linh hoạt và ngày càng mở rộng.

Dokku có những ưu điểm nhưng đồng thời cũng có những nhược điểm, hi vọng bạn sẽ thích và chờ các bài viết liên quan đến Dokku sắp tới.

Trường - TakeIT Vietnam


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí