بی آکادمی
آموزش پایتون
هوش مصنوعی
دانلود و نصب لینوکس
داکر دسکتاپ
VS Code
آموزش لاراول
گیت و گیت هاب
آموزش HTML
آموزش CSS
فلکس باکس
جاوااسکریپت
TypeScript
فروشگاه اینترنتی
اپلیکیشن موبایل
آموزش اکسل
آموزش SQL
آموزش MySQL
آموزش PHP

اضافه کردن فایل های مورد نیاز داکر

اضافه کردن فایل های مورد نیاز داکر

برای انتقال پروژه‌ای که با Composer ایجاد کرده‌اید به سرور محلی (Local Server)، باید مراحل زیر را به ترتیب انجام دهید

مرحله اول: باز کردن پروژه در اوبونتو 22.04

  1. به روز رسانی لینوکس (ubuntu 22.04)
    bash
    sudo apt-get update && sudo apt-get upgrade -y
  2. باز کردن پروژه
    Ubuntu 22.04
    cd first-website

مرحله دوم: ایجاد فایل docker-compose.yml:

  1. بعد از باز کردن پروژه توسط دستور زیر فایل docker-compose.yml: را ایجاد کنید
  2. Ubuntu 22.04
    touch docker-compose.yml
  3. باز کردن پروژه توسط ویرایشگر کد، که در اینجا vs code می باشد و کپی کردن فایل زیر در docker-compose.yml

    نکته: در هر بار استفاده از دستور زیر دقت کنید که نام هایی که در دستور زیر به رنگ قرمز می باشند قبلا استفاده نکرده باشید. بهتر است در هر بار استفاده از دستور زیر به این 4 مورد که با رنگ قرمز مشخص شده یک نام جدید به دلخواه خود اختصاص دهید.

    docker-compose.yml
    # Services Definition
    services:
    app:
    build:
    context: .
    dockerfile: Dockerfile
    image: laravel-app
    container_name: laravel-app
    restart: unless-stopped
    working_dir: /var/www
    volumes:
    - .:/var/www
    networks:
    - laravel-network
    webserver:
    image: nginx:alpine
    container_name: webserver
    restart: unless-stopped
    ports:
    - "8000:80"
    volumes:
    - .:/var/www
    - ./docker/nginx:/etc/nginx/conf.d
    networks:
    - laravel-network
    db:
    image: mysql:8.0
    container_name: db
    restart: unless-stopped
    environment:
    MYSQL_DATABASE: laravel
    MYSQL_ROOT_PASSWORD: secret
    MYSQL_USER: laravel
    MYSQL_PASSWORD: secret
    volumes:
    - dbdata:/var/lib/mysql
    ports:
    - "3306:3306"
    networks:
    - laravel-network
    phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    restart: unless-stopped
    ports:
    - "8080:80"
    environment:
    PMA_HOST: db
    MYSQL_ROOT_PASSWORD: secret
    networks:
    - laravel-network
    # Volumes Configuration
    volumes:
    dbdata:
    driver: local
    # Networks Configuration
    networks:
    laravel-network:
    driver: bridge

مرحله سوم: ایجاد فایل Dockerfile

  1. در محیط اوبونتو توسط دستور زیر فایل Dockerfile را به پروژه اضافه کنید
    Ubuntu 22.04
    touch Dockerfile
  2. کپی کردن فایل زیر در Dockerfile
    dockerfile
    FROM php:8.2-fpm
    WORKDIR /var/www
    RUN apt-get update && apt-get install -y \
    build-essential \
    libpng-dev \
    libjpeg62-turbo-dev \
    libfreetype6-dev \
    locales \
    zip \
    jpegoptim optipng pngquant gifsicle \
    vim \
    unzip \
    git \
    curl \
    libzip-dev \
    libonig-dev \
    libpq-dev \
    libxml2-dev
    RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
    RUN docker-php-ext-configure gd --with-freetype --with-jpeg
    RUN docker-php-ext-install gd
    RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
    RUN groupadd -g 1000 www
    RUN useradd -u 1000 -ms /bin/bash -g www www
    COPY --chown=www:www . /var/www
    USER www
    EXPOSE 9000
    CMD ["php-fpm"]

مرحله چهارم: ایجاد پیکربندی Nginx

  1. توسط دستور زیر فولدری به نام nginx درون فولدر docker ایجاد کنید.
    Ubuntu 22.04
    mkdir -p docker/nginx
  2. توسط دستور زیر فایل app.conf را درون nginx اضافه کنید.
    nginx
    touch docker/nginx/app.conf
  3. کد زیر را کپی کنید و در docker/nginx/app.conf پیست کنید
    nginx
    server {
    listen 80;
    index index.php index.html;
    error_log /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/public;
    location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass app:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    location / {
    try_files $uri $uri/ /index.php?$query_string;
    gzip_static on;
    }
    }