Thiết lập môi trường phát triển Ruby on Rails với Docker và Docker Compose trên Ubuntu

theanh

Administrator
Nhân viên
Docker là một dự án mã nguồn mở cung cấp nền tảng mở cho các nhà phát triển và quản trị viên hệ thống để xây dựng, đóng gói và chạy các ứng dụng ở bất kỳ đâu dưới dạng một container nhẹ. Docker tự động triển khai các ứng dụng bên trong các container phần mềm.

Ruby on Rails (RoR) là một khuôn khổ ứng dụng web mã nguồn mở, được phát hành theo Giấy phép MIT. Đây là một khuôn khổ ứng dụng web phía máy chủ tuân theo khái niệm MVC (Model-View-Controller).

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách thiết lập môi trường phát triển cho các ứng dụng Ruby on Rails bằng Docker và Docker compose. Chúng tôi sẽ sử dụng Ubuntu 18.04 làm hệ điều hành máy chủ và sử dụng cơ sở dữ liệu PostgreSQL cho dự án Rails của mình.

Những gì chúng ta sẽ làm:
  1. Cài đặt Docker và Docker Compose
  2. Tạo dự án Rails
  3. Thiết lập dự án Rails
  4. Tạo tập lệnh Docker Compose
  5. Xây dựng dự án
  6. Kiểm tra Create Basic CRUD trên Rails

Bước 1 - Cài đặt Docker và Docker Compose​

Bước đầu tiên chúng ta phải làm là cài đặt docker và docker compose. Chúng tôi sẽ cài đặt docker từ kho lưu trữ docker chính thức và cài đặt docker-compose từ dự án GitHub docker chính thức.

Trước khi cài đặt các gói Docker, hãy chạy lệnh apt bên dưới để cài đặt các gói phụ thuộc.
Mã:
sudo apt install -y \
 apt-transport-https \
 ca-certificates \
 curl \
 software-properties-common
Bây giờ hãy thêm khóa docker và kho lưu trữ docker.
Mã:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
 sudo add-apt-repository \
 "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
 $(lsb_release -cs) \
 stable"
Lệnh này sẽ tự động cập nhật tất cả các kho lưu trữ trên hệ thống. Khi hoàn tất, hãy cài đặt các gói docker-ce.
Mã:
sudo apt install -y docker-ce
Đợi cài đặt docker-ce, sau đó khởi động dịch vụ docker và thêm nó vào thời gian khởi động.
Mã:
sudo systemctl start docker
 sudo systemctl enable docker
Docker đã hoạt động trên hệ thống.

Tiếp theo, hãy cài đặt docker-compose bằng cách tải xuống tệp nhị phân trực tiếp từ kho lưu trữ GitHub của docker.

Tải xuống tệp nhị phân docker-compose vào thư mục '/usr/local/bin/' và biến nó thành tệp thực thi.
Mã:
sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
 sudo chmod +x /usr/local/bin/docker-compose
Docker và docker-compose đã được cài đặt vào hệ thống, hãy kiểm tra phiên bản bằng các lệnh bên dưới.
Mã:
docker version
 docker-compose version
Dưới đây là kết quả.


Bước 2 - Tạo dự án Ruby on Rails​

Sau khi cài đặt các gói cốt lõi docker và docker-compose vào hệ thống, chúng tôi muốn tạo một người dùng mới rồi tạo dự án Rails bằng các hình ảnh docker.

Thêm một người dùng có tên là 'hakase' và cấp cho người dùng một mật khẩu.
Mã:
useradd -m -s /bin/bash hakase
 passwd hakase
Thêm người dùng vào Nhóm 'sudo' và 'docker' và đăng nhập vào shell người dùng 'hakase'.
Mã:
usermod -a -G sudo hakase
 usermod -a -G docker hakase
 su - hakase
Bây giờ người dùng 'hakase' có thể thực thi và chạy lệnh docker.

Tiếp theo, chúng ta sẽ tạo một thư mục mới 'rails' cho dự án Ruby on Rails của mình.

Tạo thư mục 'rails' và chuyển đến thư mục đó.
Mã:
mkdir -p ~/rails
 cd ~/rails/
Bây giờ hãy thực thi lệnh 'docker run' bên dưới.
Mã:
docker run --rm -v ${PWD}:/usr/src -w /usr/src -ti ruby:alpine sh ; cd app
Lệnh sẽ chạy container tạm thời dựa trên hình ảnh ruby:alpine, gắn thư mục cục bộ vào thư mục '/usr/src' bên trong container, sau đó thực thi lệnh shell 'sh' và đi đến thư mục 'app'.



Bên trong container, cài đặt các gói 'build-base'.
Mã:
apk add build-base
Bây giờ hãy cài đặt Ruby on Rails bên trong container tạm thời.
Mã:
gem install -N rails
Và tạo dự án Rails mới có tên 'app' với PostgreSQL làm cơ sở dữ liệu, sau đó thoát/đăng xuất khỏi container.
Mã:
rails new app --database=postgresql --skip-bundle
 exit
Và bạn sẽ ở thư mục dự án Rails 'app'.

Bây giờ hãy thay đổi chủ sở hữu của thư mục dự án 'app' thành người dùng 'hakase'.
Mã:
sudo chown -R hakase:hakase ~/rails/app/
 ls -lah
Và dự án Ruby on Rails đã được tạo thông qua vùng chứa docker tạm thời.


Bước 3 - Thiết lập Dự án Rails​

Trong bước này, chúng ta sẽ tạo một Dockerfile mới cho các ứng dụng Rails của mình.

Bên trong thư mục 'rails', hãy tạo một Dockerfile mới bằng vim.
Mã:
vim Dockerfile
Dán cấu hình bên dưới.
Mã:
FROM ruby:alpineRUN apk updateRUN apk add build-base nodejs postgresql-dev tzdataRUN gem install -N railsRUN mkdir -p /appWORKDIR /appCOPY ./app/Gemfile /appCOPY ./app/Gemfile.lock /appRUN bundle install --binstubs
Lưu và thoát.

Chúng ta đang tạo một docker image dựa trên Ruby Alpine linux. Chúng tôi đang cài đặt các gói mới cho quá trình cài đặt rails, tạo một thư mục /app mới, sao chép Gemfile và Gemfile.lock từ thư mục cục bộ của ứng dụng và cài đặt tất cả các gói dựa trên Gemfile.

Tiếp theo, hãy đến thư mục 'app', tạo một tệp mới Gemfile.lock.
Mã:
cd app/
 touch Gemfile.lock
Chỉnh sửa tệp 'database.yml'.
Mã:
vim config/database.yml
Thay đổi cấu hình cơ sở dữ liệu mặc định và thay đổi các chi tiết như bên dưới.
Mã:
mặc định: &mặc định bộ điều hợp: postgresql mã hóa: unicode máy chủ: db tên người dùng: postgres nhóm:  timeout: 5000
Lưu và thoát.



Cấu hình dự án Rails đã hoàn tất.

Bước 4 - Tạo tệp Docker Compose​

Trong bước này, chúng ta sẽ tạo tệp docker-compose mới cho Ứng dụng Rails của mình. Chúng ta sẽ chỉ tạo hai dịch vụ db cơ sở dữ liệu PostgreSQL và web là chính ứng dụng rails.

Tạo tệp mới 'docker-compose.yml' bên trong thư mục 'rails'.
Mã:
vim docker-compose.yml
Và dán cấu hình bên dưới.
Mã:
version: '3.6'services: db: image: postgres:alpine volumes: - ./postgresql:/var/lib/postgresql/data web: build: . volumes: - ./app:/app working_dir: /app command: bundle exec rails s -p 3000 -b '0.0.0.0' ports: - 80:3000 depends_on: - db
Lưu và thoát.



Bây giờ hãy tạo thư mục 'postgresql' bên trong dự án 'rails'.
Mã:
mkdir -p ~/rails/postgresql
Và chúng ta đã sẵn sàng để xây dựng dự án Rails của mình.

Bước 5 - Xây dựng dự án​

Xây dựng hình ảnh Rails docker bằng lệnh docker-compose bên dưới.
Mã:
docker-compose build
Lệnh này sẽ tải xuống hình ảnh Ruby Alpine Linux và xây dựng hình ảnh tùy chỉnh theo nhu cầu của chúng ta dựa trên Dockerfile.



Tạo cơ sở dữ liệu PostgreSQL cho dự án.
Mã:
docker-compose run web rake db:create


Bây giờ hãy đưa các dịch vụ 'db' và 'web' lên.
Mã:
docker-compose up -d
Và các dịch vụ rails đã hoạt động, hãy kiểm tra bằng lệnh docker-compose bên dưới.
Mã:
docker-compose ps
Bạn có thể thấy dịch vụ 'web' đang chạy trên cổng '80' trên máy chủ.

Bây giờ hãy kiểm tra hình ảnh docker trên hệ thống của chúng tôi.
Mã:
hình ảnh docker-compose
Và bạn sẽ nhận được kết quả như bên dưới.



Bây giờ hãy mở trình duyệt web của bạn và nhập địa chỉ IP máy chủ hoặc tên miền. Của tôi là:


Và bạn sẽ có ứng dụng trang Rails mặc định trên đó.



Bây giờ chúng ta đã sẵn sàng để phát triển dự án Rails của mình.

Bước 6 - Kiểm tra Tạo CRUD cơ bản trên Rails​

Tạo CRUD đơn giản trên rails bằng cách chạy lệnh rails bên trong dịch vụ chứa 'web'.
Mã:
docker-compose exec web rails g scaffold Tiêu đề bài đăng:string body:text
Bây giờ hãy tạo cơ sở dữ liệu.
Mã:
docker-compose exec web rake db:migrate


Bây giờ hãy mở trình duyệt web của bạn và nhập địa chỉ IP của máy chủ vào thanh địa chỉ có đường dẫn '/posts'. Của tôi là:


Và bạn sẽ nhận được trang CRUD đơn giản như bên dưới.



Nhập bài đăng và nhấp vào nút 'Tạo bài đăng'.

Và bạn sẽ nhận được kết quả như bên dưới.



Việc thiết lập Môi trường phát triển cho Ruby on Rails với Docker và Docker Compose đã hoàn tất thành công.

Tham khảo​

 
Back
Bên trên