2024

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

  1. 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.
  2. 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

  1. Thêm gem 'aws-sdk-s3', '~> 1.85', group: :development vào Gemfile của ứng dụng Rails.

  2. Chạy bundle install để cài đặt gem mới.

  3. 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

  1. Mở terminal và di chuyển đến thư mục gốc của ứng dụng Rails.

  2. 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

  1. 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
  1. 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

  1. 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
  1. 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 


Other news