Build một ứng dụng Rails với Docker

Trong bài viết này mình sẽ không để cập đến việc Docker là gì , nội dung sẽ chỉ tập trung vào các bước để build được một ứng dụng Rails sử dụng Docker , nếu các bạn chưa hiểu Docker và các thuật ngữ liên quan là gì , các bạn có thể tìm

Trong bài viết này mình sẽ không để cập đến việc Docker là gì , nội dung sẽ chỉ tập trung vào các bước để build được một ứng dụng Rails sử dụng Docker , nếu các bạn chưa hiểu Docker và các thuật ngữ liên quan là gì , các bạn có thể tìm hiểu về Docker tại đây

Cài đặt

Tạo một project Rails

Okay, để tạo một ứng dụng rails với docker thì đầu tiên chắc hẳn ta phải có một ứng dụng Rails rồi
Ở đây mình sẽ tạo một project đơn giản

 rails new docker_rails

Sau khi có project Rails rồi , mình thử dùng một lệnh docker xem sao

docker run 

Nó báo lỗi docker not found, đương nhiên rồi , muốn xài được docker thì bạn phải cài đặt nó cái đã , mình sẽ tiến hành bước tiếp theo bên dưới.

Cài đặt docker

Để cài đặt docker, mình sẽ gõ lệnh sau vào terminal

 sudo apt install docker.io

Mình đang sử dụng hệ điều hành ubuntu , các bạn nếu sử dụng hệ điều hành khác có thể xem hướng dẫn cài đặt ở đây

Tiến hành xây dựng project

Sau khi cài đặt docker xong, các bạn có thể xem các lệnh có thể sử dụng với docker bằng cách gõ

docker build --help

Đến đây mình sẽ trình bày cách để đóng gói một ứng dụng Rails sử dụng Docker.
Để có thể dockerize một ứng dụng, đầu tiên chúng ta cần một file Dockerfile, chúng ta build một image từ Dockerfile đó, sau đó chạy image đó trong một container .
Đầu tiền , chúng ta sẽ tạo một file là tên Dockerfile như sau:

FROM ruby:3.0.2

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

ENV RAILS_ENV='development'
ENV RAKE_ENV='development'

COPY . /usr/src/app
RUN bundle install
CMD ["rails", "s"]
EXPOSE 3000

Giải thích về các câu lệnh như sau:

  • FROM ruby:3.0.2
    Dòng này thực hiện pull image ruby:3.0.2 từ dockerhub về, nó sẽ chứa những thứ cần thiết như các thư viện lõi cho một ứng dụng ruby.
  • RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
    Dòng này sẽ cài đặt một vài thiết lập môi trường cần thiết
  • RUN mkdir -p /usr/src/app và WORKDIR /usr/src/app
    Tạo một thư mục cho riêng app sẽ chạy, và khai báo thư mục này vào WORKDIR
  • ENV RAILS_ENV=’development’ và ENV RAKE_ENV=’development
    Khai báo ENV cho ứng dụng
  • COPY . /usr/src/app
    Copy source code vào thư mục usr/src/app của image
  • RUN bundle install và CMD [“rails”, “s”]
    Các câu lệnh cần thiết để chạy ứng dụng rails
  • EXPOSE 3000
    Cổng giao tiếp với container

Sau đó ta chạy lệnh

 docker build -t docker_rails .

Lưu ý phải có dấu chấm cuối câu lệnh, nó có ý nghĩa là sẽ run file DockerFile trong thư mục local
Nếu build thành công nó sẽ hiện thông báo sau:

Successfully built 1b4875e76f8a
Successfully tagged docker_rails:latest

Chúng ta có thể kiểm tra image ta vừa build thông qua lệnh

docker image

Bây giờ chúng ta sẽ chạy image bằng container

docker run -dp  3000:3000 docker_rails

Sau khi chạy lệnh trên ta có thể kiểm tra container đang run bằng cách:

docker ps

Nếu status là up thì nó đang chạy

Mở localhost:3000 lên và xem kết quả nào

Tài liệu tham khảo

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ