Hướng Dẫn Chi Tiết Cài Đặt Môi Trường Phát Triển Ruby on Rails Bằng Docker
Để nắm vững những phương pháp cài đặt nhanh chóng, hãy xem phần cuối của bài viết.
Cách Tiếp Cận Cài Đặt Dự Án
Trong bài viết này, chúng ta sẽ khởi động một môi trường phát triển Ruby on Rails bằng cách sử dụng Docker. Quy trình này bao gồm việc tạo một dự án Rails trong một container Ruby tạm thời và sau đó xây dựng một image phát triển thích hợp cho dự án của chúng ta.
Bước 1: Tạo Dự Án Rails Mới
Để bắt đầu, bạn cần khởi động một container Ruby tạm thời và tạo dự án Rails của mình. Sử dụng lệnh sau để khởi động container:
bash
$ docker run -it -v $(pwd):/app -w /app ruby:3.2 bash
Khi đã ở trong container, cài đặt gem Rails với lệnh:
bash
/app# gem install rails
Sau khi cài đặt, bạn có thể tạo một dự án mới:
bash
/app# rails new myapp --database=postgresql --css=sass --skip-bundle
Lưu ý rằng tham số --skip-bundle
được sử dụng bởi vì chúng ta chỉ đang làm việc với một container tạm thời. Sau khi dự án được tạo, bạn có thể thoát khỏi container bằng cách nhấn ctrl-d
hoặc nhập lệnh exit
.
Bước 2: Tạo Dockerfile
Sau khi thoát khỏi container, hãy tạo một tệp Dockerfile
trong thư mục dự án và thêm vào nội dung sau:
dockerfile
FROM ruby:3.2
# Thiết lập biến môi trường
ENV BUNDLE_APP_CONFIG=.bundle
# Cài đặt các phụ thuộc cần thiết (nếu cần)
# RUN apt-get update && apt-get install -y --no-install-recommends \
# nodejs \
# npm \
# postgresql-client
WORKDIR /app
Dockerfile này định nghĩa một image môi trường phát triển Ruby on Rails cơ bản. Bạn có thể cài đặt thêm các phụ thuộc hệ thống nếu cần.
Bước 3: Tạo docker-compose.yml
Tiếp theo, hãy tạo một tệp docker-compose.yml
trong thư mục dự án với nội dung:
yaml
version: "3.9"
services:
web:
build: .
command: bin/rails server -b 0.0.0.0
volumes:
- .:/app
ports:
- 3000:3000
depends_on:
- postgres
postgres:
image: postgres:13
environment:
POSTGRES_PASSWORD: postgres
Tệp này sẽ định nghĩa hai dịch vụ: web
và postgres
. Dịch vụ web
sẽ xây dựng image dựa trên Dockerfile
, gắn volume để dễ dàng phát triển, mở cổng 3000, và phụ thuộc vào dịch vụ postgres
.
Bước 4: Xây Dựng Image
Để xây dựng image, chạy lệnh sau:
bash
$ docker compose build
Docker Compose sẽ đọc tệp docker-compose.yml
và xây dựng các image tương ứng. Lưu ý rằng mỗi khi bạn chỉnh sửa Dockerfile
, bạn cần chạy lại lệnh này.
Bước 5: Vào Dòng Lệnh Container
Chạy lệnh sau để vào shell của container dịch vụ web
:
bash
$ docker compose run web bash
Trong shell này, bạn có thể chạy các lệnh cần thiết cho phát triển, chẳng hạn như bundle install
, bin/rails g
, và nhiều lệnh khác.
Bước 6: Chạy Bundle Cài Đặt
Đầu tiên, hãy cấu hình thư mục cài đặt bundle bằng lệnh:
bash
/app# bundle config set --local path vendor/bundle
Điều này sẽ chỉ định thư mục cài đặt vendor/bundle
trong dự án của bạn. Sau đó, chạy lệnh cài đặt bundle:
bash
/app# bundle install
Đừng quên thêm vendor/bundle
vào .gitignore
để tránh theo dõi các tệp không cần thiết.
Bước 7: Chuẩn Bị Cơ Sở Dữ Liệu
Trước khi tạo cơ sở dữ liệu, bạn cần cấu hình database.yml
trong dự án Rails để kết nối với dịch vụ PostgreSQL. Trong tệp database.yml
, thêm các dòng sau vào phần development
và test
:
yaml
host: postgres
username: postgres
password: postgres
Sau đó, chạy lệnh sau để khởi tạo cơ sở dữ liệu:
bash
/app# bin/setup
Bước 8: Khởi Động Dịch Vụ Web
Cuối cùng, bạn có thể khởi động dịch vụ web. Mở một terminal mới và chạy lệnh:
bash
$ docker compose up
Khi dịch vụ đã khởi động xong, bạn có thể mở trình duyệt và truy cập http://localhost:3000
để xem trang chào mừng của Rails.
Cách Thiết Lập Nhanh Chóng Hơn
Nếu bạn muốn một giải pháp đơn giản hơn, hãy thử ServBay. Đây là một công cụ quản lý môi trường phát triển tất cả trong một cho nhiều ngôn ngữ phát triển và các thành phần cơ sở dữ liệu, bao gồm PHP, Node.js, MariaDB, PostgreSQL, cũng như các cơ sở dữ liệu NoSQL như Redis và Memcached.
Chỉ cần tải xuống gói Redis trong ServBay để thiết lập một môi trường Redis và tất cả sẽ được cấu hình tự động trong vòng 3 phút.
source: viblo