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:
- Instal Docker dan Docker Compose
- Buat Proyek Rel
- Siapkan Proyek Rails
- Buat Skrip Penulisan Docker
- Bangun Proyek
- 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.