بدون یادگیری داکر پروژه های خود را داکرایز کنید

اگر شما توسعه دهنده یکی از پلتفرم های Laravel, Symfony, Next, Nuxt, WordPress باشید برای مرحله Devops نیاز به یادگیری خیلی چیزها دارید که چطور بتونید پروژه خود را با کمک Docker راه اندازی کنید معمولا شاید در گوگل سرچ میزنید و یک نمونه آماده را پیدا میکنید و با کمی تغییر آن را اجرا میکنید و ممکن است انواع مشکلات امنیتی و خطاهای سطح دسترسی را هم داشته باشید و از طرفی هم گوشه ای از ذهنتان درگیر نگهداری آن باشد.

اما امروز من با یک ابزار جدید آشنا شدم که خیلی کار شما را در بخش داکر راحت میکند این ابزار میتواند برای شما در حالت های توسعه یا حالت عملیاتی به شکل کاملا بهینه و اصولی اجرا کنید. کافی است وارد سایت https://kool.dev شوید و دستور نصب آن را وارد کنید.

curl -fsSL https://kool.dev/install | bash

با اجرای این دستور ابزار kool برای شما نصب میشود و زین پس میتوانید زیرساخت و کدهای مربوط به داکر را برای انواع پروژه های خود به سرعت و دقت بالا اجرا کنید.

مثلا شما میخواهید پروژه لاراولی خود را داکرایز کنید البته یک نکته را هم بگم که خود لاراول یک پکیج برای داکر دارد که به laravel sail معرفی شده اما متاسفانه فقط برای وضعیت توسعه روی سیستم توسعه دهنده است و هیچ راهکاری را برای حالت production نمیدهد یعنی حتی ngnix را هم ندارد و کلیه تنظیمات بر اساس وضعیت تست و برنامه نویسی ساخته شده .

برای شروع البته باید قبلا این پست را خوانده باشید اگر در ایران و سرورهای ایران کار میکنید

$ kool create laravel my-project

سپس بعد از pull شدن میتوانید ساختار مورد نظر خود را مشابهه نمونه زیر کانفیگ کنید

در نهایت با وارد شدن به پروژه

cd my-project

مشاهده خواهید کرد که دو فایل docker-compose.yml و kool.yml به پروژه اضافه شده تا اینجا زیر ساخت ساخته شده و بعد باید تنظیمات .env پروژه را بر اساس داکر قرار دهید که به طور کامل در لینک زیر قابل دسترس است. البته داخل فایل kool.yml دستوراتی درج شده که در پایین توضیح دادم و شما میتوانید دستورات بیشتری را هم به آن اضافه کنید.

https://kool.dev/docs/presets/laravel#2-update-envexample

ضمنا kool به شما یکسری دستورات هم میده که دیگه نیاز به وارد شدن به shell container نداشته باشید چون وقتی شما اگر داکر استفاده میکنید مثل حالت عادی نمی تونید دستورات php artisan migrate را اجرا کنید حتما باید وارد container بشید و بعد اونجا واردش کنید اما با کمک kool دستورات به شکل زیر قابل استفاده هستند

kool run artisan migrate:fresh --seed

توضیحات بیشتر هم در ادامه لینک بالا قرار دارد اما دقیقا اینجاست

https://kool.dev/docs/presets/laravel#3-run-kool-run-setup

سرور تست ایمیل با MailHog

برنامه نویسان برای اینکه از صحت کارکرد ارسال ایمیل مطمن شوند و طراحی قالب ایمیل ها را در محیط تست چک کنند نیاز به یک سرویس ایمیل می باشد که یکی از بهترین آنها MailHog است.

در این روش با کمک داکر میتوانید به صورت نامحدود ایمیل های تستی ارسال کنید و هیچ وابستگی به سایت و سرویس دهنده ای نخواهید داشت.

در ابتدا docker را نصب کنید . و سپس یک فایل با عنوان docker-compose.yml را ایجاد نمایید و دستور زیر را در وارد میکنیم

touch docker-compose.yml
version: "3.7"
services:

  # SMTP Server
  smtp:
    platform: linux/x86_64
    image: mailhog/mailhog
    container_name: docker-workspace-smtp
    logging:
      driver: 'none'
    ports:
      - "8003:1025"
      - "8100:8025"
    networks:
      - docker_workspace_network

networks:
  docker_workspace_network:
    driver: bridge

در نهایت با وارد کردن دستور

docker compose up -d

نصب انجام میشود جهت مشاهده mailHog وارد آدرس http://IP:8100 شوید

به جای IP باید IP ماشین مجازی را وارد کنید که با دستور ip a در ابونتو قابل دریافت است

در لاراول فایل .env را به مقادیر زیر تغییر دهید و در سایر سرویس ها مقادیر را معادل نمونه زیر در نظر بگیرید

MAIL_MAILER=smtp
MAIL_HOST=IPaddress
MAIL_PORT=8003
MAIL_USERNAME=''
MAIL_PASSWORD=''
MAIL_ENCRYPTION=null

دستورات import و export دیتابیس mysql در محیط داکر docker

برای گرفت export از دیتابیس دستور زیر را اجرا نمایید

docker exec docker-test-db-1 /usr/bin/mysqldump -u root --password=secret laravel --no-tablespaces > dump000916-3.sql

docker-test-db-1 همان container name است که با دستور docker ps بدست می آید

laravel نام دیتابیسی است که باید export گرفته شود

dump000916-3.sql نام فایلی است که export گرفته میشود

جهت ورود اطلاعات به دیتابیس import از دستور زیر

docker exec -i docker-test-db-1 /usr/bin/mysql -u root --password=secret laravel --init-command="SET SESSION FOREIGN_KEY_CHECKS=0;" < dump000916-3.sql

docker-test-db-1 همان container name است که با دستور docker ps بدست می آید

laravel نام دیتابیسی است که باید import گرفته شود

dump000916-3.sql نام فایلی است که import میشود

command=”SET SESSION FOREIGN_KEY_CHECKS=0;” کاری میکند که اگر در هنگام ورود خطای foregen key check error بود صرف نظر کند