This guide provides comprehensive instructions for running docker-magento on Windows using WSL2. While docker-magento was primarily designed for Mac and Linux, it can work excellently on Windows with proper configuration.
This guide explains how to set up the required environment variables (GitHub Secrets) for the Laravel deployment GitHub Actions workflow.
The deployment script uses GitHub Secrets to securely store sensitive information like SSH keys and server details. These secrets are referenced in the workflow using the ${{ secrets.SECRET_NAME }}
syntax.
TEST-DRIVEN DEVELOPMENT IS NON-NEGOTIABLE. Every single line of production code must be written in response to a failing test. No exceptions. This is not a suggestion or a preference - it is the fundamental practice that enables all other principles in this document.
I follow Test-Driven Development (TDD) with a strong emphasis on behavior-driven testing and functional programming principles. All work should be done in small, incremental changes that maintain a working state throughout development.
#!/bin/bash | |
# bin/dbbackuprestore | |
# Configuration variables for remote server | |
REMOTE_SERVER="" | |
REMOTE_SERVER_USER="" # Leave empty if using SSH config or key-based auth | |
REMOTE_SERVER_PORT="" # Default SSH port | |
REMOTE_SSH_KEY="" # Path to SSH key file (leave empty if using default) |
composer install
- Install dependenciesbin/magento setup:install
- Install Magentobin/magento setup:upgrade
- Update database schemabin/magento setup:di:compile
- Compile dependency injectionbin/magento setup:static-content:deploy
- Deploy static assets
dbx() { | |
echo "Enter the tag (e.g., markoshust/magento-php:8.4-fpm-0):" | |
read -r tag | |
if [ -z "$tag" ]; then | |
echo "Error: Tag cannot be empty" | |
return 1 | |
fi | |
echo "You entered: $tag" |
<?php | |
namespace Macademy\Minerva\Model\ResourceModel\Faq\Grid; | |
class Collection extends \Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult | |
{ | |
protected function _initSelect() | |
{ | |
parent::_initSelect(); | |
// Add your join statements here |
Set up GitHub Actions to handle deployments for your Laravel application. This has similar functionality to Laravel Forge without the recurring cost. GitHub Actions can be used to automate your deployment process on every push to your repository.
- Server Access: Ensure you have SSH access to your server where the Laravel app will be deployed.
- Secrets: Store sensitive information such as your server's IP address, SSH username, and private SSH key in GitHub Secrets. Go to your GitHub repository, navigate to "Settings" > "Secrets and variables" > "Actions", and add the following secrets:
DEPLOY_SERVER_IP
: Your server's IP address.DEPLOY_SERVER_USER
: Your SSH username.DEPLOY_SERVER_KEY
: Your private SSH key. Make sure this key is authorized to access your server (~/.ssh/authorized_keys
).
DEPLOY_SERVER_DIR
: The directory where you'd like to deploy your app, relative to/var/www/
. Ex:example.com
#!/bin/bash | |
# Function to cleanup processes on script exit | |
cleanup() { | |
echo "Cleaning up..." | |
./vendor/bin/sail down | |
kill "$(jobs -p)" 2>/dev/null | |
exit | |
} |
<?php | |
// 3. Create a custom collection class that extends SearchResult. | |
declare(strict_types=1); | |
namespace Macademy\Minerva\Model\ResourceModel\Faq\Grid; | |
use Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult; |