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:
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.
Bây giờ hãy thêm khóa docker và kho lưu trữ docker.
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.
Đợ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.
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.
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.
Dưới đây là kết quả.
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.
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'.
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 đó.
Bây giờ hãy thực thi lệnh 'docker run' bên dưới.
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'.
Bây giờ hãy cài đặt Ruby on Rails bên trong container tạm thời.
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.
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'.
Và dự án Ruby on Rails đã được tạo thông qua vùng chứa docker tạm thời.
Bên trong thư mục 'rails', hãy tạo một Dockerfile mới bằng vim.
Dán cấu hình bên dưới.
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.
Chỉnh sửa tệp '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.
Lưu và thoát.
Cấu hình dự án Rails đã hoàn tất.
Tạo tệp mới 'docker-compose.yml' bên trong thư mục 'rails'.
Và dán cấu hình bên dưới.
Lưu và thoát.
Bây giờ hãy tạo thư mục 'postgresql' bên trong dự án 'rails'.
Và chúng ta đã sẵn sàng để xây dựng dự án Rails của mình.
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.
Bây giờ hãy đưa các dịch vụ 'db' và 'web' lên.
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.
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.
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ây giờ hãy tạo cơ sở dữ liệu.
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.
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:
- Cài đặt Docker và Docker Compose
- Tạo dự án Rails
- Thiết lập dự án Rails
- Tạo tập lệnh Docker Compose
- Xây dựng dự án
- 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
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"
Mã:
sudo apt install -y docker-ce
Mã:
sudo systemctl start docker
sudo systemctl enable docker
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
Mã:
docker version
docker-compose version
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
Mã:
usermod -a -G sudo hakase
usermod -a -G docker hakase
su - hakase
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/
Mã:
docker run --rm -v ${PWD}:/usr/src -w /usr/src -ti ruby:alpine sh ; cd app
Bên trong container, cài đặt các gói 'build-base'.
Mã:
apk add build-base
Mã:
gem install -N rails
Mã:
rails new app --database=postgresql --skip-bundle
exit
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
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
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
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
Mã:
vim config/database.yml
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
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
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
Bây giờ hãy tạo thư mục 'postgresql' bên trong dự án 'rails'.
Mã:
mkdir -p ~/rails/postgresql
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
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
Mã:
docker-compose ps
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
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
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.