Docker হলো একটি ওপেন সোর্স প্ল্যাটফর্ম যা অ্যাপ্লিকেশন এবং তার ডিপেন্ডেন্সি এক্সিকিউটেবল কন্টেইনারে সন্নিবেশিত করে পরিবেশের মধ্যে এক্সিকিউশন সহজ করে। Symfony এবং Docker একত্রে ব্যবহার করলে আপনি আপনার Symfony প্রজেক্টের জন্য নির্ভরযোগ্য এবং পুনরাবৃত্তিযোগ্য ডেভেলপমেন্ট পরিবেশ তৈরি করতে পারেন।
এই গাইডে, আমরা Docker ব্যবহার করে একটি Symfony প্রজেক্ট সেটআপ করার প্রক্রিয়া দেখব, যাতে আপনার Symfony অ্যাপ্লিকেশন দ্রুত ডেভেলপ এবং ডিপ্লয় করা যায়।
Docker এবং Symfony এর সুবিধা
- প্রতিটি ডিপেন্ডেন্সি কন্টেইনারাইজড: Symfony এবং তার ডিপেন্ডেন্সি যেমন PHP, Nginx, MySQL ইত্যাদি সব কন্টেইনারে আলাদাভাবে চালানো যায়, যার ফলে ডেভেলপমেন্ট পরিবেশ পরিচালনা সহজ হয়।
- অপারেটিং সিস্টেম নিরপেক্ষ: Docker কন্টেইনার একটি নির্দিষ্ট অপারেটিং সিস্টেমের উপর নির্ভর না করে কাজ করে, যা বিভিন্ন পরিবেশে অ্যাপ্লিকেশনকে চালানো সহজ করে।
- প্রচলিত পরিবেশ: Docker ব্যবহার করার মাধ্যমে আপনি নিশ্চিত করতে পারেন যে আপনার অ্যাপ্লিকেশনটি সর্বত্র একইভাবে কাজ করবে, যা ডেভেলপমেন্ট, টেস্টিং এবং প্রোডাকশন পরিবেশের মধ্যে সামঞ্জস্য রক্ষা করে।
Docker এবং Symfony ব্যবহার শুরু করা
১. Docker ইনস্টলেশন
প্রথমে আপনার সিস্টেমে Docker ইনস্টল করা থাকতে হবে। Docker ডাউনলোড পেজ থেকে আপনি আপনার অপারেটিং সিস্টেমের জন্য Docker ডাউনলোড এবং ইনস্টল করতে পারবেন।
২. Symfony প্রজেক্ট তৈরি করা
Symfony প্রজেক্ট তৈরি করতে, প্রথমে Composer ব্যবহার করে একটি নতুন Symfony প্রজেক্ট তৈরি করুন।
composer create-project symfony/skeleton my_project_name
এটি একটি নতুন Symfony প্রজেক্ট তৈরি করবে।
৩. Docker কনফিগারেশন
Docker কনফিগারেশন ফাইল তৈরি করতে হবে যাতে Symfony এবং তার ডিপেন্ডেন্সি যেমন PHP, MySQL, Nginx ইত্যাদি চালানো যায়।
ডিরেক্টরি কাঠামো:
my_project_name/
├── Dockerfile
├── docker-compose.yml
├── .docker/
│ └── php/
│ └── Dockerfile
├── symfony/
│ └── ...
└── ...
ডকারফাইল (Dockerfile)
Symfony অ্যাপ্লিকেশন চালানোর জন্য PHP এবং অন্যান্য ডিপেন্ডেন্সি কনফিগার করতে একটি Dockerfile তৈরি করুন।
# Use official PHP image with necessary extensions
FROM php:8.1-fpm
# Install necessary PHP extensions
RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev libzip-dev git unzip && \
docker-php-ext-configure gd --with-freetype --with-jpeg && \
docker-php-ext-install gd zip pdo pdo_mysql
# Set working directory
WORKDIR /var/www
# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Copy project files into the container
COPY . .
# Install PHP dependencies
RUN composer install
# Expose the port for the app
EXPOSE 9000
ডকার কম্পোজ (docker-compose.yml)
docker-compose.yml ফাইলে সার্ভিসগুলো কনফিগার করা হবে যেমন PHP, Nginx, MySQL ইত্যাদি।
version: '3.8'
services:
php:
build:
context: .
dockerfile: Dockerfile
container_name: symfony_php
volumes:
- .:/var/www
networks:
- symfony_network
environment:
- SYMFONY_ENV=dev
depends_on:
- db
nginx:
image: nginx:alpine
container_name: symfony_nginx
volumes:
- .:/var/www
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
ports:
- "8080:80"
networks:
- symfony_network
depends_on:
- php
db:
image: mysql:5.7
container_name: symfony_db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: symfony_db
volumes:
- db_data:/var/lib/mysql
networks:
- symfony_network
networks:
symfony_network:
driver: bridge
volumes:
db_data:
driver: local
- php: PHP ফ্যাস্টCGI সার্ভার, যেখানে Symfony অ্যাপ্লিকেশন রান করবে।
- nginx: Nginx সার্ভার, যেটি HTTP রিকোয়েস্ট গ্রহণ করবে এবং PHP ফ্যাস্টCGI সার্ভারে পাঠাবে।
- db: MySQL ডাটাবেস সার্ভিস।
Nginx কনফিগারেশন (docker/nginx/default.conf)
server {
listen 80;
server_name symfony.local;
root /var/www/public;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include fastcgi_params;
}
}
এই কনফিগারেশন ফাইলটি Nginx-কে Symfony অ্যাপ্লিকেশনের public/ ডিরেক্টরি থেকে ফাইল সার্ভ করার জন্য নির্দেশনা দেয়।
৪. Docker কম্পোজ স্টার্ট করা
এখন, আপনি docker-compose কমান্ড ব্যবহার করে আপনার Symfony প্রজেক্ট চালু করতে পারেন:
docker-compose up -d
এই কমান্ডটি সমস্ত সার্ভিস চালু করবে এবং Symfony অ্যাপ্লিকেশনটি http://localhost:8080 এ চলে আসবে।
৫. ডেভেলপমেন্ট সার্ভার ব্যবহার করা
Symfony ডেভেলপমেন্ট সার্ভার চালানোর জন্য আপনি docker-compose exec কমান্ড ব্যবহার করে PHP কনটেইনারে প্রবেশ করতে পারেন এবং Symfony কনসোল কমান্ডগুলি চালাতে পারেন।
docker-compose exec php bin/console server:run 0.0.0.0:8000
এটি Symfony ডেভেলপমেন্ট সার্ভার চালু করবে এবং অ্যাপ্লিকেশনটি **http://localhost:8000**-এ অ্যাক্সেসযোগ্য হবে।
Docker এবং Symfony এর সুবিধা
- অপারেটিং সিস্টেম নিরপেক্ষ:
Docker কনটেইনারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনটি যেকোনো অপারেটিং সিস্টেমে চালাতে পারবেন। - পুনরাবৃত্তিযোগ্য পরিবেশ:
Docker-এ কনফিগারেশন করা হলে, আপনি নিশ্চিত করতে পারবেন যে ডেভেলপমেন্ট, টেস্টিং, এবং প্রোডাকশন পরিবেশ একভাবে থাকবে। - সহজ ডিপ্লয়মেন্ট:
Docker কনটেইনারকে প্রোডাকশন সার্ভারে সহজে স্থানান্তর করা যায়, এবং এটি নিশ্চিত করে যে অ্যাপ্লিকেশনটি সঠিকভাবে কাজ করবে। - ডিপেন্ডেন্সি ম্যানেজমেন্ট:
Docker কনটেইনারে সমস্ত ডিপেন্ডেন্সি (যেমন PHP, Nginx, MySQL) আলাদাভাবে পরিচালনা করা যায়।
সারাংশ
Docker এবং Symfony একত্রে ব্যবহার করলে আপনি সহজেই একটি কনটেইনারাইজড এবং নির্ভরযোগ্য ডেভেলপমেন্ট পরিবেশ তৈরি করতে পারেন। Docker আপনার Symfony অ্যাপ্লিকেশন এবং তার ডিপেন্ডেন্সি এক্সিকিউটেবল কন্টেইনারে রাখে, যা অ্যাপ্লিকেশন ডিপ্লয়মেন্ট, স্কেলেবিলিটি, এবং ম্যানেজমেন্টের ক্ষেত্রে অনেক সুবিধা প্রদান করে। Docker ব্যবহার করে Symfony প্রজেক্ট তৈরি করা সহজ এবং দ্রুত হতে পারে, এবং এটি ডেভেলপারদের আরও স্থিতিশীল এবং সুরক্ষিত পরিবেশ প্রদান করে।
Read more