GNU/Linux >> Belajar Linux >  >> Ubuntu

Siapkan lingkungan Pengembangan Ruby on Rails dengan Docker dan Docker Compose di Ubuntu

Docker adalah proyek sumber terbuka yang menyediakan platform terbuka bagi pengembang dan sysadmin untuk membangun, mengemas, dan menjalankan aplikasi di mana saja sebagai wadah yang ringan. Docker mengotomatiskan penerapan aplikasi di dalam wadah perangkat lunak.

Ruby on Rails (RoR) adalah kerangka kerja aplikasi web sumber terbuka, diterbitkan di bawah Lisensi MIT. Ini adalah kerangka kerja aplikasi web sisi server yang mengikuti konsep MVC (Model-View-Controller).

Dalam tutorial ini, saya akan menunjukkan cara menyiapkan lingkungan pengembangan untuk aplikasi Ruby on Rails menggunakan penulisan Docker dan Docker. Kami akan menggunakan Ubuntu 18.04 sebagai sistem operasi host dan menggunakan database PostgreSQL untuk proyek Rails kami.

Apa yang akan kami lakukan:

  1. Instal Docker dan Docker Compose
  2. Buat Proyek Rel
  3. Siapkan Proyek Rails
  4. Buat Skrip Penulisan Docker
  5. Bangun Proyek
  6. Uji Buat CRUD Dasar di Rel

Langkah 1 - Instal Penulisan Docker dan Docker

Langkah pertama yang harus kita lakukan adalah menginstall docker dan compose docker itu sendiri. Kami akan menginstal buruh pelabuhan dari repositori buruh pelabuhan resmi, dan menginstal komposisi buruh pelabuhan dari proyek resmi buruh pelabuhan GitHub.

Sebelum menginstal paket Docker, jalankan perintah apt di bawah ini untuk menginstal dependensi paket.

sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

Sekarang tambahkan kunci buruh pelabuhan dan repositori buruh pelabuhan.

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"

Perintah akan secara otomatis memperbarui semua repositori di sistem. Setelah selesai, instal paket docker-ce.

sudo apt install -y docker-ce

Tunggu penginstalan docker-ce, lalu mulai layanan docker dan tambahkan ke waktu boot.

sudo systemctl start docker
sudo systemctl enable docker

Docker aktif dan berjalan di sistem.

Selanjutnya, instal docker-compose dengan mengunduh file biner langsung dari repositori docker GitHub.

Unduh file biner docker-compose ke direktori '/usr/local/bin/' dan buat agar dapat dieksekusi.

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

Docker dan docker-compose telah diinstal ke sistem, periksa versinya menggunakan perintah di bawah ini.

docker version
docker-compose version

Di bawah ini adalah hasilnya.

Langkah 2 - Buat Proyek Ruby on Rails

Setelah menginstal paket inti docker dan docker-compose ke sistem, kami ingin membuat pengguna baru dan kemudian menghasilkan proyek Rails menggunakan gambar docker.

Tambahkan pengguna bernama 'hakase' dan berikan kata sandi kepada pengguna tersebut.

useradd -m -s /bin/bash hakase
passwd hakase

Tambahkan pengguna ke grup 'sudo' dan 'docker' dan login ke shell pengguna 'hakase'.

usermod -a -G sudo hakase
usermod -a -G docker hakase
su - hakase

Sekarang pengguna 'hakase' dapat mengeksekusi dan menjalankan perintah buruh pelabuhan.

Selanjutnya, kita akan membuat direktori baru 'rails' untuk proyek Ruby on Rails kita.

Buat direktori 'rails' dan buka.

mkdir -p ~/rails
cd ~/rails/

Sekarang jalankan perintah 'docker run' di bawah ini.

docker run --rm -v ${PWD}:/usr/src -w /usr/src -ti ruby:alpine sh ; cd app

Perintah akan menjalankan wadah sementara berdasarkan gambar ruby:alpine, mount direktori lokal ke direktori '/usr/src' di dalam wadah, dan kemudian jalankan perintah shell 'sh' dan pergi ke direktori 'app'.

Di dalam wadah, instal paket 'build-base'.

apk add build-base

Sekarang instal Ruby on Rails di dalam wadah sementara.

gem install -N rails

Dan buat proyek Rails baru bernama 'app' dengan PostgreSQL sebagai database, lalu keluar/keluar dari wadah.

rails new app --database=postgresql --skip-bundle
exit

Dan Anda akan berada di 'aplikasi' direktori proyek Rails.

Sekarang ubah pemilik direktori proyek 'aplikasi' menjadi pengguna 'hakase'.

sudo chown -R hakase:hakase ~/rails/app/
ls -lah

Dan proyek Ruby on Rails telah dibuat melalui wadah buruh pelabuhan sementara.

Langkah 3 - Siapkan Proyek Rails

Pada langkah ini, kita akan membuat Dockerfile baru untuk aplikasi Rails kita.

Di dalam direktori 'rails', buat file Docker baru menggunakan vim.

vim Dockerfile

Tempelkan konfigurasi di bawah.

FROM ruby:alpine

RUN apk update
RUN apk add build-base nodejs postgresql-dev tzdata
RUN gem install -N rails

RUN mkdir -p /app
WORKDIR /app

COPY ./app/Gemfile /app
COPY ./app/Gemfile.lock /app
RUN bundle install --binstubs

Simpan dan keluar.

Kami sedang membuat image buruh pelabuhan baru berdasarkan linux Ruby Alpine. Kami menginstal paket baru untuk instalasi rails, membuat direktori /app baru, menyalin Gemfile dan Gemfile.lock dari direktori lokal aplikasi, dan menginstal semua paket berdasarkan Gemfile.

Selanjutnya, masuk ke direktori 'app', buat file baru Gemfile.lock.

cd app/
touch Gemfile.lock

Edit file 'database.yml'.

vim config/database.yml

Ubah konfigurasi database default dan ubah detail seperti di bawah ini.

default: &default
   adapter: postgresql
   encoding: unicode
   host: db
   username: postgres
   pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
   timeout: 5000

Simpan dan keluar.

Konfigurasi proyek Rails telah selesai.

Langkah 4 - Buat File Tulis Docker

Pada langkah ini, kita akan membuat file komposisi buruh pelabuhan baru untuk Aplikasi Rails kita. Kami hanya akan membuat dua layanan db database PostgreSQL dan web adalah aplikasi Rails itu sendiri.

Buat file baru 'docker-compose.yml' di dalam direktori 'rails'.

vim docker-compose.yml

Dan rekatkan konfigurasi di bawah ini.

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

Simpan dan keluar.

Sekarang buat direktori 'postgresql' di dalam proyek 'rails'.

mkdir -p ~/rails/postgresql

Dan kami siap untuk membangun proyek Rails kami.

Langkah 5 - Bangun Proyek

Bangun image buruh pelabuhan Rails menggunakan perintah docker-compose di bawah ini.

docker-compose build

Perintah tersebut akan mendownload image Ruby Alpine Linux dan membuat image kustom sesuai kebutuhan kita berdasarkan Dockerfile kita.

Buat database PostgreSQL untuk proyek tersebut.

docker-compose run web rake db:create

Sekarang aktifkan layanan 'db' dan 'web'.

docker-compose up -d

Dan layanan Rails aktif dan berjalan, periksa menggunakan perintah docker-compose di bawah ini.

docker-compose ps

Anda dapat melihat layanan 'web' berjalan pada port '80' pada host.

Sekarang periksa gambar buruh pelabuhan di sistem kami.

docker-compose images

Dan Anda akan mendapatkan hasil seperti di bawah ini.

Sekarang buka browser web Anda dan ketik alamat IP server atau nama domain. Milik saya adalah:

http://rails.hakase-labs.io/

Dan Anda akan mendapatkan aplikasi halaman Rails default di dalamnya.

Sekarang kami siap untuk mengembangkan proyek Rails kami.

Langkah 6 - Uji Buat CRUD Dasar di Rails

Hasilkan CRUD sederhana pada rails dengan menjalankan perintah rails di dalam layanan container 'web'.

docker-compose exec web rails g scaffold Post title:string body:text

Sekarang buat databasenya.

docker-compose exec web rake db:migrate

Sekarang buka browser web Anda dan ketik alamat IP server pada bilah alamat dengan path '/posts'. Milik saya adalah:

http://rails.hakase-labs.io/posts

Dan Anda akan mendapatkan halaman CRUD sederhana seperti di bawah ini.

Ketik postingan dan klik tombol 'Buat Posting'.

Dan Anda akan mendapatkan hasil seperti di bawah ini.

Pengaturan Lingkungan Pengembangan untuk Ruby on Rails dengan Docker dan Docker Compose telah berhasil diselesaikan.


Ubuntu
  1. Cara Menginstal Docker Compose di Ubuntu 18.04

  2. Kesalahan Dengan Vagrant Dan Ubuntu 12.10 Dengan Rvm?

  3. Siapkan lingkungan chroot di Ubuntu dengan debootstrap

  1. Cara Menginstal Docker Compose di Ubuntu 20.04

  2. Cara Menginstal dan Menggunakan Docker Compose di Ubuntu 18.04

  3. Bagaimana Setup dan Konfigurasi Docker Swarm Cluster di Ubuntu

  1. Cara Menginstal Ruby on Rails (RoR) dengan PostgreSQL di Ubuntu 16.04

  2. Dockerizing Wordpress dengan Nginx dan PHP-FPM di Ubuntu 16.04

  3. Cara Menginstal Gitlab dengan PostgreSQL dan Nginx di Ubuntu 15.04