Sử dụng Docker LocalStack service S3 cho Rails
Sử dụng S3 ở local sẽ tốn phí. Có giải pháp tiết kiệm hơn chính là sử dụng Docker LocalStack service S3 cho Rails.
Bài viết này sẽ hướng dẫn các bước chi tiết cho các bạn mới biết cách cài đặt và sử dụng Docker LocalStack service S3 cho Rails.
Bước 1: Cài đặt Docker
- Truy cập trang web chính thức của Docker và tải xuống phiên bản phù hợp với hệ điều hành của bạn.
- Cài đặt Docker theo hướng dẫn cụ thể cho hệ điều hành của bạn.
Bước 2: Tạo một ứng dụng Rails mới
Nếu bạn chưa có một ứng dụng Rails, hãy tạo một ứng dụng mới bằng lệnh sau:
rails new ten_ung_dung cd ten_ung_dung
Bước 3: Cài đặt và cấu hình LocalStack
-
Thêm
gem 'aws-sdk-s3', '~> 1.85', group: :development
vàoGemfile
của ứng dụng Rails. -
Chạy
bundle install
để cài đặt gem mới. -
Tạo một tệp Docker Compose để cấu hình LocalStack. Tạo một tệp
docker-compose.yml
trong thư mục gốc của ứng dụng Rails với nội dung sau:
version: '3.7' services: localstack: image: localstack/localstack ports: - "4566:4566" environment: - SERVICES=s3 - DEBUG=1 volumes: - "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
Bước 4: Khởi động LocalStack và Rails ứng dụng
-
Mở terminal và di chuyển đến thư mục gốc của ứng dụng Rails.
-
Chạy lệnh sau để khởi động LocalStack và dịch vụ S3:
docker-compose up
Bước 5: Cấu hình ứng dụng Rails để sử dụng LocalStack S3
- Mở tệp
config/storage.yml
và thêm cấu hình cho LocalStack S3:
amazon: service: S3 access_key_id: "YOUR_ACCESS_KEY_ID" secret_access_key: "YOUR_SECRET_ACCESS_KEY" region: "us-east-1" endpoint: "http://localhost:4566" # LocalStack endpoint force_path_style: true
- Thay
YOUR_ACCESS_KEY_ID
vàYOUR_SECRET_ACCESS_KEY
bằng giá trị mặc định hoặc tuỳ chỉnh của bạn.
Bước 6: Tạo và sử dụng tệp tin trong Rails
- Tạo một tệp lưu trữ trong Rails thông qua Active Storage. Ví dụ:
rails active_storage:install rails db:migrate
- Sử dụng Active Storage trong Rails ứng dụng để tạo và quản lý các tệp tin. Ví dụ:
# Tạo một tệp tin mới file = File.open("path/to/file.txt") object = ActiveStorage::Blob.create_after_upload!( io: file, filename: 'file.txt', content_type: 'text/plain' ) # Lấy URL của tệp tin url = rails_blob_url(object)
Bây giờ ứng dụng Rails của bạn đã được cấu hình để sử dụng LocalStack S3 trong môi trường phát triển.
Mời bạn xem bài viết gốc của tác giả tại link github này:
https://gist.github.com/t-tu-ruby-dev/cfdae08bda9b7cbdeef7b5ed09542b3f
Tác giả: t-tu
Ruby Developer