Laravel Livewire with WinNMP Part II
https://github.com/sueboy19/livewire_demo
https://github.com/sueboy19/livewire_demo
winnmp for windows a. create project livewire (Database and user auto create livewire) b. https://winnmp.wtriple.com/tutorial/laravel update composer a. mkdir new directory "t" b. cd t c. https://getcomposer.org/download/ c1. php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" c2. php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" c3. php composer-setup.php c4. php -r "unlink('composer-setup.php');" c5. mv composer.phar to C:\WinNMP\bin\composer cd \WinNMP\WWW\livewire a. delete index.php b. composer create-project --prefer-dist laravel/laravel . c. composer require laravel/ui d. composer install e. edit .env e1. DB_DATABASE=livewire DB_USERNAME=livewire f. php artisan ui bootstrap --auth g. php artisan migrate h. developer tools composer require doctrine/dbal composer require --dev barryvdh/laravel-ide-helper composer require --dev beyondcode/laravel-dump-server composer require --dev barryvdh/laravel-debugbar composer require --dev roave/security-advisories:dev-master php artisan vendor:publish --provider="BeyondCode\DumpServer\DumpServerServiceProvider" php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider" I. php artisan key:generate install node.js for windows a. https://nodejs.org/zh-tw/download b. npm install c. npm run dev ...
cron php laravel UI Boostrap jetstream docker-compose laravel_docker dokcer-compose.yml cron: build: ./infra/docker/cron env_file: ./env.mariadb.local.env stop_signal: SIGTERM depends_on: - app volumes: - ./backend:/work/backend Dockerfile FROM php:8.0.11-fpm-buster LABEL maintainer="ucan-lab <yes@u-can.pro>" #SHELL ["/bin/bash", "-oeux", "pipefail", "-c"] # timezone environment ENV TZ=Asia/Taipei \ # locale LANG=en_US.UTF-8 \ LANGUAGE=en_US:UTF-8 \ LC_ALL=en_US.UTF-8 \ # Laravel environment APP_SERVICES_CACHE=/tmp/cache/services.php \ APP_PACKAGES_CACHE=/tmp/cache/packages.php \ APP_CONFIG_CACHE=/tmp/cache/config.php \ APP_ROUTES_CACHE=/tmp/cache/routes.php \ APP_EVENTS_CACHE=/tmp/cache/events.php \ VIEW_COMPILED_PATH=/tmp/cache/views \ # SESSION_DRIVER=cookie \ LOG_CHANNEL=stderr \ DB_CONNECTION=mysql \ DB_PORT=3306 RUN apt-get update RUN apt-get -y install locales libicu-dev libzip-dev htop cron nano RUN apt-get -y install default-mysql-client RUN locale-gen en_US.UTF-8 && localedef -f UTF-8 -i en_US en_US.UTF-8 RUN docker-php-ext-install intl pdo_mysql zip bcmath exif RUN apt-get clean && rm -rf /var/lib/apt/lists/* # 自訂 RUN mkdir -p /tmp/cache WORKDIR /work/backend # 這行超級重要 把初始環境的變數寫死 RUN printenv > /etc/environment # 把log 輸出到 docker 上 RUN ln -sf /proc/1/fd/1 /var/log/laravel-scheduler.log #ADD crontab /var/spool/cron/crontabs/root #RUN chown root:crontab /var/spool/cron/crontabs/root #RUN chmod 0600 /var/spool/cron/crontabs/root #RUN crontab -l | { cat; echo "* * * * * . /usr/local/bin/php /work/backend/artisan config:cache && php artisan schedule:run >> /var/log/cron.log 2>&1"; } | crontab - #RUN crontab -l | { cat; echo "* * * * * date >> /var/log/cron.log"; } | crontab - #RUN crontab -l | { cat; echo "* * * * * echo hello > /proc/1/fd/1 2>/proc/1/fd/2"; } | crontab - COPY crontab /etc/cron.d/crontab RUN chmod 0644 /etc/cron.d/crontab RUN crontab /etc/cron.d/crontab CMD bash -c "/usr/local/bin/php /work/backend/artisan config:cache && cron -f" cron ...
https://blog.trippyboy.com/2021/laravel/laravel-expected-response-code-250-but-got-an-empty-response/ ./config/mail.php 'local_domain' => env('MAIL_HOST'), 'default' => env('MAIL_MAILER', 'smtp'), 'mailers' => [ 'smtp' => [ 'transport' => 'smtp', 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 'port' => env('MAIL_PORT', 587), 'encryption' => env('MAIL_ENCRYPTION', 'tls'), 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 'timeout' => null, 'auth_mode' => null, 'local_domain' => env('MAIL_HOST'), ],
Multiple parts (id, name, finish, finish_noe) finish = 2 is Job OK protected $rules = [ 'parts.*.finish_note' => ['required_if:parts.*.finish,2'], ]