چگونه به سرعت یک محیط توسعه ریل راه اندازی کنیم

برای یک روش حتی سریعتر، انتهای مقاله را ببینید.
رویکرد
ابتدا یک ظرف Ruby موقت برای ایجاد پروژه راه اندازی کنید و سپس تصویر توسعه لازم را بسازید.
یک پروژه جدید ایجاد کنید
برای ایجاد یک پروژه Rails، یک کانتینر Ruby موقت راه اندازی کنید:
$ docker run -it -v $(pwd):/app -w /app ruby:3.2 bash
نگین Rails را در داخل ظرف نصب کنید:
/app# gem install rails
سپس پروژه را ایجاد کنید:
/app# rails new myapp --database=postgresql --css=sass --skip-bundle
در اینجا، ما از --skip-bundle
پارامتر زیرا این فقط یک ظرف موقت است. بعداً بسته نرم افزاری را در ظرف توسعه اجرا خواهیم کرد. اکنون ظرف موقت به هدف خود رسیده است. با فشار دادن از ظرف خارج شوید ctrl-d
یا تایپ کردن exit
.
یک Dockerfile اضافه کنید
یک Dockerfile در فهرست پروژه با محتوای زیر اضافه کنید:
FROM ruby:3.2
# Reset this environment variable set by the Ruby image to its default value
ENV BUNDLE_APP_CONFIG=.bundle
# Uncomment this section if you need to install other dependencies
# RUN apt-get update && apt-get install -y --no-install-recommends \
# nodejs \
# npm \
# postgresql-client
WORKDIR /app
این یک تصویر مینیمال محیط توسعه Rails است. در صورت نیاز، میتوانید وابستگیهای دیگر سیستم را با استفاده از آن نصب کنید apt-get
. ما هنوز نیازی به ساخت تصویر نداریم. بعداً با استفاده از دستور docker compose آن را می سازیم.
docker-compose.yml را اضافه کنید
a اضافه کنید docker-compose.yml
فایل در پوشه پروژه با محتوای زیر:
version: "3.9"
services:
web:
build: .
command: bin/rails server -b 0.0.0.0
volumes:
- .:/app
ports:
- 3000:3000
depends_on:
- postgres
postgres:
image: postgres:13
environment:
POSTGRES_PASSWORD: postgres
این تعریف می کند web
و postgres
خدمات. را web
سرویس یک تصویر بر اساس Dockerfile در دایرکتوری فعلی میسازد، دایرکتوری فعلی را روی آن سوار میکند /app
دایرکتوری داخل کانتینر، پورت 3000 را در معرض دید قرار دهید و یک وابستگی به آن اضافه کنید postgres
سرویس. را postgres
سرویس استفاده خواهد کرد postgres
تصویر و رمز اولیه را از طریق متغیر محیطی تنظیم کنید.
تصویر را بسازید
دستور زیر را اجرا کنید:
$ docker compose build
Docker Compose پیکربندی را در آن می خواند docker-compose.yml
و تصاویر مربوطه را بسازید. توجه: هر بار که Dockerfile را تغییر می دهید، باید این دستور را دوباره اجرا کنید.
وارد Command Line شوید
دستور زیر را اجرا کنید:
$ docker compose run web bash
این شروع خواهد شد web
ظرف سرویس و باز کردن پوسته bash. در این پوسته می توانید دستورات مورد نیاز برای توسعه محلی مانند bundle install
، bin/rails g
و غیره تمامی عملیات های بعدی که باید در داخل کانتینر اجرا شوند از طریق این پوسته انجام خواهند شد.
باندل را اجرا کنید
ابتدا دستور زیر را در داخل کانتینر اجرا کنید:
/app# bundle config set --local path vendor/bundle
این دستور دایرکتوری نصب باندل را روی vendor/bundle
دایرکتوری تحت پروژه به این ترتیب، هر بار که Gemfile را در حین توسعه به روز می کنید، نیازی به بازسازی تصویر نخواهید داشت.
سپس بسته نرم افزاری را اجرا کنید:
/app# bundle install
توجه: به یاد داشته باشید که اضافه کنید vendor/bundle
به .gitignore
.
پایگاه داده را آماده کنید
قبل از ایجاد پایگاه داده، تنظیمات پایگاه داده پروژه Rails را تغییر دهید. در محیط Docker Compose، PostgreSQL و فرآیند Rails در کانتینرهای مختلف مشابه میزبانهای مختلف اجرا میشوند، جایی که نام سرویس نام شبکه مربوطه آنهاست.
تغییر database.yml
برای اضافه کردن مطالب زیر در development
و test
بخش ها:
host: postgres
username: postgres
password: postgres
سپس دستور زیر را اجرا کنید:
/app# bin/setup
با این کار پایگاه داده های مربوطه ایجاد می شود.
وب سرویس را راه اندازی کنید
پس از آماده سازی، نوبت به راه اندازی وب سرویس می رسد. ترمینال دیگری را باز کنید و دستور زیر را اجرا کنید:
$ docker compose up
پس از اتمام راه اندازی، باز کنید http://localhost:3000
برای دیدن صفحه خوش آمدگویی Rails.
یک راه حتی ساده تر
ServBay را دانلود کنید
ServBay یک ابزار مدیریت محیط توسعه یکپارچه است که از چندین زبان توسعه و مؤلفه های پایگاه داده، از جمله PHP، Node.js، MariaDB (MySQL)، PostgreSQL، و همچنین پایگاه های داده NoSQL مانند Redis و Memcached پشتیبانی می کند.
برای راه اندازی یک محیط Redis، به سادگی بسته Redis را در ServBay دانلود کنید، و تمام تنظیمات تنها در 3 دقیقه تکمیل می شود.