نحوه استفاده از برنامه PHP با استفاده از Docker-compose

Docker یک برنامه نرم افزاری است که برای مجازی سازی سطح سیستم عامل مورد استفاده قرار می گیرد. همچنین به آن کانتینیزاسیون گفته می شود. برنامه های PHP بیشتر توسط یک سرور وب ، مترجم زبان و یک DBMS (بانک اطلاعاتی) تشکیل شده اند. در این آموزش ما از یک پشته کامل PHP با استفاده از docker استفاده خواهیم کرد. ظروف برای Nginx (وب سرور) ، MySQL (سیستم پایگاه داده) و زبان PHP خود را تنظیم خواهیم کرد..


برای این آموزش یک برنامه ساده ایجاد خواهیم کرد که لیستی از شهرها را از پایگاه داده می گیرد و آن را در صفحه وب نمایش می دهد. این به درک و نشان دادن کار کامل کمک می کند.

پیش نیازها

  • Docker CE نصب شده است
  • حداقل دانش کار docker
  • دانش در مورد ظروف

مرحله 1: پیکربندی محیط کار

یک برنامه مبتنی بر داکر از چندین ظروف تشکیل شده است. مدیریت همه اینها به صورت دستی دشوار است. برای حل این مشکل که از docker-compose استفاده می کنیم ، به مدیریت چندین کانتینر با استفاده از یک فایل پیکربندی کمک می کند.

برای نصب docker-compose از دستورات زیر استفاده کنید

$ curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o / usr / local / bin / docker- ساختن
chmod + x / usr / local / bin / docker-آهنگسازی

ما پوشه ای را برای ذخیره همه پرونده ها در اینجا ایجاد خواهیم کرد. سپس cd را در آن قرار داده و از آن بعنوان فهرست کار ما استفاده می شود.

$ mkdir ~ / docker
$ cd ~ / docker

با استفاده از این دستور ، پوشه بیشتری ایجاد کنید

برنامه mkdir php nginx

در پوشه php ما از نوع php دلخواه خود استفاده خواهیم کرد ، ngnix دارای تصویر ngix سفارشی و پوشه برنامه دارای کد منبع و پرونده های پیکربندی خواهد بود.

مرحله 2: ظرف PHP را پیکربندی کنید

برای اتصال به وب سرور Nginx از php-fpm استفاده خواهیم کرد. در داخل پوشه php یک پرونده با نام Dockerfile ایجاد کنید و مطالب زیر را در آن قرار دهید.

از php: 7.1-fpm-alpine3.4
RUN APK update – بدون حافظه نهان
&& apk add – بدون حافظه نهان PHPIZE_DEPS $
&& apk add – no cache mysql-dev
&& docker-php-ext نصب pdo pdo_mysql

ما در اینجا از نسخه Alpine استفاده می کنیم. آلپاین توزیع کوچکی است که ظروف را هدف قرار می دهد.

docker build -t نام php php /

همانطور که در مورد پرونده پیکربندی yml docker-compose yml گفته شد ، به شما امکان می دهد پرونده را ایجاد کنید

$ touch app / docker-compose.yml

تنظیمات زیر را در پرونده قرار دهید

نسخه: ‘2’
خدمات:
php:
تصویر: vultr-php
جلد:
-./: / برنامه
working_dir: / برنامه

نسخه نسخه docker-compose.yml است که در اینجا استفاده می شود. توجه داشته باشید که هر سرویس دارای یک کلید خاص در بلوک خدمات است. از نام مشخص شده در اینجا برای مرجع این ظرف خاص بعدا استفاده می شود. ما همچنین یک نقشه برداری از حجم را تعریف می کنیم.

جلد:
– ./: / برنامه

این به docker-compose می گوید که فهرست دایرکتوری فعلی (./) را در فهرست / برنامه در داخل ظرف قرار دهید. خط آخر اطمینان حاصل خواهد کرد که دستورات از این پوشه یعنی i.e./app اجرا خواهند شد

ظروف را با استفاده از دستورات زیر مرتب کنید

$ cd ~ / docker / برنامه
docker-compose up -d

برای بررسی اینکه ظروف php اجرا شده است. از دستور زیر استفاده کنید:

$ docker ps

مرحله 3: اجرای دستورات داخل ظرف

از دستور docker-compose استفاده کنید ، مطمئن شوید که هنوز در پوشه برنامه هستید.

$ docker-compose exec [service] [دستور]

سرویس گیرنده سرویس به کلید خدمات مراجعه می کند.

دستور زیر را در docker-compose برای بررسی نسخه php اجرا کنید.

$ docker-compose exec php php -v

پیام زیر را مشاهده خواهید کرد:

PHP 7.1.14 (کلی) (ساخته شده: 7 فوریه 2018 00:40:45) (NTS)
حق چاپ (c) 1997-2018 گروه PHP
Zend Engine v3.1.0، Copyright (c) 1998-2018 Zend Technologies

مرحله 4: پیکربندی ظرف Nginx

مانند گذشته ، ما یک تصویر سفارشی برای Nginx ایجاد خواهیم کرد. برای انجام این کار از دستورات زیر استفاده کنید.

$ cd ~ / docker
$ touch nginx / Dockerfile

تنظیمات زیر را در Dockerfile قرار دهید

از nginx: 1.13.8-آلپ
کپی ./default.conf /etc/nginx/conf.d/default.conf

در این پرونده Docker ما به سادگی یک فایل پیکربندی را در تنظیم برنامه خود کپی می کنیم.

$ touch nginx / default.conf

اکنون تنظیمات زیر را به پرونده اضافه کنید

سرور {
listen80 default_server؛
listen [::]: 80 default_server ipv6only = روشن؛

root / app؛
index index.php؛

#server_name server_domain_or_IP؛

محل / {
$ uri $ uri / /index.php؟؟query_string؛
}

محل .php $
try_files $ uri /index.php = 404؛
fastcgi_split_path_info ^ (. +. php) (/.+) $؛
fastcgi_pass php: 9000؛
fastcgi_index index.php؛
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name؛
شامل fastcgi_params؛
}
}

docker-compose داخلی یک شبکه ایجاد می کند و نام سرویس را به عنوان نام میزبان به هر یک از سرویس های تعریف شده اختصاص می دهد. تصویر Nginx را بسازید.

docker build -t name-nginx nginx /

اکنون پرونده docker-compose.yml با تنظیمات زیر:

نسخه: ‘2’
خدمات:
php:
تصویر: vultr-php
جلد:
-./: / برنامه
working_dir: / برنامه
وب:
تصویر: vultr-nginx
جلد:
-./: / برنامه
بستگی دارد به:
-پی اچ پی
پورت ها:
-80:80

با استفاده از دستور زیر ، فایلی با نام index.php ایجاد کنید

$ <?php phpinfo ()؛

قبل از اجرای این دستورات در زیر مطمئن شوید که پورت 80 به کار رفته است

$ cd ~ / docker / برنامه
docker-compose up -d

مرحله 5: ظرف MySQL را تنظیم کنید

با استفاده از تنظیمات زیر ، پرونده ~ / docker / app / docker-compose.yml را به روز کنید

نسخه: ‘2’
خدمات:
php:
تصویر: name-php
جلد:
-./: / برنامه
working_dir: / برنامه
وب:
تصویر: name-nginx
جلد:
-./: / برنامه
بستگی دارد به:
-پی اچ پی
پورت ها:
-80:80
mysql:
تصویر: mysql: 5.7.21
جلد:
-./: / برنامه
– dbdata: / var / lib / mysql
محیط:
-MYSQL_DATABASE = جهان
-MYSQL_ROOT_PASSWORD = ریشه
working_dir: / برنامه
جلد:
dbdata:

اکنون اجازه می دهیم نمونه داده MySQL را با استفاده از دستور زیر در پوشه برنامه بارگیری کنید

$ curl -L http://downloads.mysql.com/docs/world.sql.gz -o world.sql.gz
$ gunzip world.sql.gz

اکنون ظرف را با استفاده از دستور زیر orkstrate کنید

docker-compose up -d

اکنون پایگاه داده جهانی را جمع کنید

$ docker-compose exec -T mysql mysql -uroot -proot world < جهان.sql

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

$ docker-compose exec mysql mysql -uroot -prot جهان

در قسمت اعلان ، عبارت زیر را اجرا کنید

از محدوده شهر10 انتخاب کنید؛

لیستی از داده های داخل دیتابیس ، در این حالت شهرها نشان داده می شوند. اعلان را با استفاده از دستور زیر ترک کنید.

mysql> خروج

مرحله 6: ساختن برنامه PHP

ظروف در حال اجرا هستند ، اکنون به ایجاد برنامه PHP اجازه می دهیم. به پرونده app / index.php بروید و کد زیر را در آن قرار دهید.

<?پی اچ پی

$ pdo = PDO جدید (‘mysql: host = mysql؛ dbname = world؛ charset = utf8’، ‘root’، ‘root’)؛

$ stmt = $ pdo->آماده کردن("
شهر را انتخاب کنید نام ، شهر.District ، country.Name به عنوان کشور ، شهر. جمعیت
از شهر
کشور پیوستن سمت چپ در شهر.CountryCode = country.Code
ترتیب توسط جمعیت نزولی
حد 10
")؛
$ stmt->اجرا کردن()؛
$ شهرستانها = $ stmt->fetchAll (PDO :: FETCH_ASSOC)؛

?>

Vultr Rocks!

پرجمعیت ترین شهرهای جهان

نام
کشور
ناحیه
جمعیت

<?phpforeach ($ شهرها به عنوان $ شهر): ?>

<?phpendforeach?>

<?= $ city [‘Name’]?><?= $ city [‘Country’]?><?= $ city [‘District’]?><?= number_format ($ city [‘جمعیت’] ، 0)?>

حال اگر به آدرس IP در مرورگر خود دسترسی پیدا کنید ، لیست شهرهایی که محبوب ترین آنها هستند ، خواهید دید. تبریک می گویم با استفاده از docker برنامه PHP را با موفقیت مستقر کرده اید.

این 3 سرویس برتر میزبانی ابر را بررسی کنید:

FastComet

قیمت شروع:
59.95 دلار


قابلیت اطمینان
9.7


قیمت گذاری
9.5


کاربر پسند
9.7


پشتیبانی
9.7


امکانات
9.6

بررسی ها را بخوانید

از FastComet بازدید کنید

ابرهای ابری

قیمت شروع:
10.00 دلار


قابلیت اطمینان
9.4


قیمت گذاری
9.2


کاربر پسند
9.2


پشتیبانی
9.3


امکانات
9.3

بررسی ها را بخوانید

از Cloudways بازدید کنید

میزبان

قیمت شروع:
7.45 دلار


قابلیت اطمینان
9.3


قیمت گذاری
9.3


کاربر پسند
9.4


پشتیبانی
9.4


امکانات
9.2

بررسی ها را بخوانید

از هاستینجر بازدید کنید

مقالات مرتبط با نحوه

  • نحوه افزودن کد رهگیری Google با استفاده از PHP در cPanel
    کارشناس
  • نحوه نصب پشته LEMP (Linux، Nginx، MySQL، PHP) بر روی سرور اختصاصی Ubuntu 18.04 یا اختصاصی
    حد واسط
  • نحوه نصب MediaWiki با PHP 7 در Ubuntu 18.04 VPS یا سرور اختصاصی
    حد واسط
  • نحوه اشکال زدایی و خطاها در سایت وردپرس
    حد واسط
  • نحوه جابجایی بین نسخه های PHP در Ubuntu 18.04 VPS یا سرور اختصاصی
    حد واسط
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me