Jalal LinuX
Jalal LinuX
خواندن ۲ دقیقه·۲ سال پیش

داکرایز لاراول

سلام دوستان ✌??

چند مدت پیش برای داکرایز پروژه لاراولی ایمیج ساختم و خیلی کمکم کرد و دوستان هم استفاده از این ایمیج براشون راحت بوده و راضی بودن. دوست داشتم با شما هم به اشتراک بزارم. ✍️


پکیج های نصب شده و کانفیگ های این ایمیج:

OS: amd64/ubuntu:20.04 TimeZone: Asia/Tehran Php: 8.0 Composer: latest Node: 16 Npm: latest Pm2: latest Postgres-Client: 14 OS Packages: nano wget curl net-tools iputils-ping supervisor sqlite3 zip unzip git htop jpegoptim optipng pngquant gifsicle Php Extensions: swoole pgsql sqlite3 gd curl memcached imap mbstring xml zip bcmath soap readline intl pcov msgpack ldap igbinary redis pear Php Customize ini: post_max_size=100M upload_max_filesize=100M variables_order=EGPCS Aliases: art = php artisan

 شما برای استفاده از این ایمیج نیاز به ایجاد ۵ فایل در پروژه خود دارید.


.env.docker

این فایل همان env ای خواهد بود که در cotainer شما ایجاد میشود. میتوانید برای ادرس دادن به ای پی بیرون از کانتینر (سروری ک دارید روش کار میکنید) از host.docker.internal استفاده کنید.

APP_NAME=Laravel APP_ENV=production APP_KEY= APP_DEBUG=false APP_URL=http://lcalhost LOG_CHANNEL=daily LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug DB_CONNECTION=pgsql DB_HOST=host.docker.internal DB_PORT=5432 DB_DATABASE=laravel DB_USERNAME=postgres DB_PASSWORD=postgres BROADCAST_DRIVER=log CACHE_DRIVER=redis FILESYSTEM_DISK=local QUEUE_CONNECTION=database SESSION_DRIVER=file SESSION_LIFETIME=120 MEMCACHED_HOST=127.0.0.1 REDIS_HOST=host.docker.internal REDIS_PASSWORD= REDIS_PORT=6379 MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=465 MAIL_USERNAME= MAIL_PASSWORD= MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS= MAIL_FROM_NAME=&quot${APP_NAME}&quot AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET= AWS_USE_PATH_STYLE_ENDPOINT=false PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= PUSHER_HOST= PUSHER_PORT=443 PUSHER_SCHEME=https PUSHER_APP_CLUSTER=mt1 VITE_PUSHER_APP_KEY=&quot${PUSHER_APP_KEY}&quot VITE_PUSHER_HOST=&quot${PUSHER_HOST}&quot VITE_PUSHER_PORT=&quot${PUSHER_PORT}&quot VITE_PUSHER_SCHEME=&quot${PUSHER_SCHEME}&quot VITE_PUSHER_APP_CLUSTER=&quot${PUSHER_APP_CLUSTER}&quot


‍docker-compose.yml

version: '3' services: app: container_name: 'laravel' restart: always build: context: . dockerfile: Dockerfile tty: true extra_hosts: - 'host.docker.internal:host-gateway' ports: - '0.0.0.0:80:8000'


Dockerfile

FROM jalallinux/laravel-9:php-80 COPY . /app WORKDIR /app COPY start-container /usr/local/bin/start-container COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf RUN chmod +x /usr/local/bin/start-container COPY .env.docker .env RUN composer install EXPOSE 8000 ENTRYPOINT [&quotstart-container&quot]


start-container

#!/usr/bin/env bash if [ ! -z &quot$WWWUSER&quot ]; then usermod -u $WWWUSER root fi if [ ! -d /.composer ]; then mkdir /.composer fi chmod -R ugo+rw /.composer if [ $# -gt 0 ]; then exec gosu $WWWUSER &quot$@&quot else exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf fi


supervisor.conf

این فایل supervisor است برای ران کردن و نگه داشتن پروسس ها. که در این مثال دستور serv پروژه و pm2 رو ران کردیم.

[supervisord] nodaemon=true user=root logfile=/var/log/supervisor/supervisord.log pidfile=/var/run/supervisord.pid [program:php] #command=/usr/bin/php -d variables_order=EGPCS /app/artisan serve --host=0.0.0.0 --port=8000 command=/usr/bin/php -d variables_order=EGPCS /app/artisan octane:start --host=0.0.0.0 --port=8000 user=root stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:pm2] command=/usr/bin/pm2 start user=root autorestart=false


ecosystem.config.js

این فایل مربوط به pm2 است و باید پروسس هایی که میخواهید ران باشن رو در این لیست اضافه کنید. در این مثال یک scheduler و چهار صف لاراول را ران کردیم. برای اطلاعات بیشتر به داکیومنت pm2 مراجعه کنید.

module.exports = { apps: [ { namespace: &quotlaravel&quot, name: &quotscheduler&quot, interpreter: &quotphp&quot, script: &quotartisan&quot, exec_mode: &quotfork&quot, instances: 1, autorestart: true, cron_restart: &quot* * * * *&quot, max_memory_restart: &quot50M&quot, watch: false, args: [ &quotschedule:work&quot, ], }, { namespace: &quotlaravel&quot, name: &quotqueue&quot, interpreter: &quotphp&quot, script: &quotartisan&quot, exec_mode: &quotfork&quot, instances: 4, autorestart: true, cron_restart: &quot5 * * * *&quot, max_memory_restart: &quot50M&quot, watch: false, args: [ &quotqueue:work&quot, &quotdatabase&quot, &quot--queue=default&quot, &quot--tries=3&quot, ], }, ] }


در آخر هم میتونید با دستور زیر پروژه خود را با داکر اجرا کنید.

docker-compose up -d --build


امیدوار مفید واقع شده باشه ?

لاراولداکرlaraveldockerphp
شاید از این پست‌ها خوشتان بیاید