Skip to content

51.0.0 (Magento 2.4.8 support) #1315

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Apr 8, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build-nginx-1-24.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@ jobs:
push: true
tags: |
markoshust/magento-nginx:1.24
markoshust/magento-nginx:1.24-0
markoshust/magento-nginx:1.24-1
2 changes: 1 addition & 1 deletion .github/workflows/build-php-8-1.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@ jobs:
push: true
tags: |
markoshust/magento-php:8.1-fpm
markoshust/magento-php:8.1-fpm-7
markoshust/magento-php:8.1-fpm-8
2 changes: 1 addition & 1 deletion .github/workflows/build-php-8-2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@ jobs:
push: true
tags: |
markoshust/magento-php:8.2-fpm
markoshust/magento-php:8.2-fpm-6
markoshust/magento-php:8.2-fpm-7
2 changes: 1 addition & 1 deletion .github/workflows/build-php-8-3.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@ jobs:
push: true
tags: |
markoshust/magento-php:8.3-fpm
markoshust/magento-php:8.3-fpm-4
markoshust/magento-php:8.3-fpm-5
2 changes: 1 addition & 1 deletion .github/workflows/build-php-8-4.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,4 @@ jobs:
platforms: linux/amd64,linux/arm64
push: true
tags: |
markoshust/magento-php:8.4-fpm-dev
markoshust/magento-php:8.4-fpm-0
26 changes: 26 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,32 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [51.0.0] - 2025-04-08

This release provides full support for Magento 2.4.8 (released same day), includes multiple Docker image updates, fixes important bugs, and adds several new utilities for improved developer experience.

### Added
- New `bin/docker-start` helper script to automatically start Docker Desktop or OrbStack environments [PR #956](https://github.com/markshust/docker-magento/pull/956)
- Enhanced cron management that maintains state between container restarts [PR #1309](https://github.com/markshust/docker-magento/pull/1309)
- Compatibility settings for Elasticsearch and OpenSearch on ARM64/Apple M-series chips [PR #1307](https://github.com/markshust/docker-magento/pull/1307)
- Relocated Selenium service configuration to `compose.dev.yaml` for better organization [PR #913](https://github.com/markshust/docker-magento/pull/913)
- Firefox Developer Edition support for SSL certificates [PR #830](https://github.com/markshust/docker-magento/pull/830)

### Updated
- Upgraded Node.js to version 22.x across all PHP images [PR #1305](https://github.com/markshust/docker-magento/pull/1305)
- Upgraded PHP extensions: Redis to 6.2.0, Swoole to 6.0.2, Xdebug to 3.4.2 [PR #1305](https://github.com/markshust/docker-magento/pull/1305)
- Updated Composer to 2.8.6 in PHP 8.2, 8.3, and 8.4 images [PR #1305](https://github.com/markshust/docker-magento/pull/1305)
- Updated SPX PHP profiler to version 0.4.18 [PR #1305](https://github.com/markshust/docker-magento/pull/1305)
- Increased client max body size limit to 100M in nginx configuration [PR #1307](https://github.com/markshust/docker-magento/pull/1307)
- Improved SSL certificate handling for multi-domain setups [PR #1300](https://github.com/markshust/docker-magento/pull/1300)

### Fixed
- OpenSearch and Elasticsearch container failures on ARM64/Apple Silicon devices [PR #1307](https://github.com/markshust/docker-magento/pull/1307)
- Cron service unexpectedly failing to restart after being enabled [PR #1309](https://github.com/markshust/docker-magento/pull/1309)
- Multiple domain support in SSL certificate generation [PR #1257](https://github.com/markshust/docker-magento/pull/1257)
- Typo in README documentation [PR #1296](https://github.com/markshust/docker-magento/pull/1296)
- Reorganized backend access documentation for better visibility [PR #1306](https://github.com/markshust/docker-magento/pull/1306)

## [50.0.0] - 2024-01-31

### Added
Expand Down
52 changes: 21 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,28 +151,13 @@ mkdir -p ~/Sites/magento
cd $_

# Run this automated one-liner from the directory you want to install your project.
curl -s https://raw.githubusercontent.com/markshust/docker-magento/master/lib/onelinesetup | bash -s -- magento.test community 2.4.7-p3
curl -s https://raw.githubusercontent.com/markshust/docker-magento/master/lib/onelinesetup | bash -s -- magento.test community 2.4.8
```

The `magento.test` above defines the hostname to use, `community` is the Magento edition, and the `2.4.7-p3` defines the Magento version to install. Note that since we need a write to `/etc/hosts` for DNS resolution, you will be prompted for your system password during setup.
The `magento.test` above defines the hostname to use, `community` is the Magento edition, and the `2.4.8` defines the Magento version to install. Note that since we need a write to `/etc/hosts` for DNS resolution, you will be prompted for your system password during setup.

After the one-liner above completes running, you should be able to access your site at `https://magento.test`.

## Accessing the Magento Backend

After successfully installing the Magento environment, you can access the backend by following these steps:

1. Open your web browser and go to the following URL: `https://magento.test/admin/`.

2. Use the following default credentials to log in:
- **Username:** `john.smith`
- **Password:** `password123`

3. Upon logging in, you might be prompted to configure Two-Factor Authentication (2FA). This emails you a code to log in with (which you can check with Mailcatcher by visiting `http://{yourdomain}:1080`). By default, the email address used for this purpose is:
- **Email:** `john.smith@gmail.com`

If you are testing in a local development environment and wish to disable 2FA, you can do so by installing [Mark's DisableTwoFactorAuth module](https://github.com/markshust/magento2-module-disabletwofactorauth).

#### Install sample data

After the above installation is complete, run the following lines to install sample data:
Expand All @@ -197,7 +182,7 @@ cd $_
curl -s https://raw.githubusercontent.com/markshust/docker-magento/master/lib/template | bash

# Download the version of Magento you want to use with:
bin/download community 2.4.7-p3
bin/download community 2.4.8
# You can specify the edition (community, enterprise, mageos) and version (2.4.7-p3, 1.0.5, etc.)
# If no arguments are passed in, the edition defaults to "community"
# If no version is specified, it defaults to the most recent version defined in `bin/download`
Expand All @@ -209,17 +194,6 @@ bin/download community 2.4.7-p3
# bin/cli git checkout 2.4-develop
# bin/composer install

# Want to install Magento <2.4.6? In bin/setup-install, replace the lines:
# --elasticsearch-host="$ES_HOST" \
# --elasticsearch-port="$ES_PORT" \
# --opensearch-host="$OPENSEARCH_HOST" \
# --opensearch-port="$OPENSEARCH_PORT" \
# --search-engine=opensearch \
# with:
# --elasticsearch-host="$ES_HOST" \
# --elasticsearch-port="$ES_PORT" \
# --search-engine=elasticsearch7 \

# Run the setup installer for Magento:
bin/setup magento.test

Expand Down Expand Up @@ -321,8 +295,9 @@ It is recommended to keep your root docker config files in one repository, and y
- `bin/dev-urn-catalog-generate`: Generate URN's for PhpStorm and remap paths to local host. Restart PhpStorm after running this command.
- `bin/devconsole`: Alias for `bin/n98-magerun2 dev:console`
- `bin/docker-compose`: Support V1 (`docker-compose`) and V2 (`docker compose`) docker compose command, and use custom configuration files, such as `compose.yml` and `compose.dev.yml`
- `bin/docker-start`: Start the Docker application (either Orbstack or Docker Desktop)
- `bin/docker-stats`: Display container name and container ID, status for CPU, memory usage(in MiB and %), and memory limit of currently-running Docker containers.
- `bin/download`: Download specific Magento version from Composer to the container, with optional arguments of the type ("community" [default], "enterprise", or "mageos") and version ([default] is defined in `bin/download`). Ex. `bin/download mageos` or `bin/download enterprise 2.4.7-p3`
- `bin/download`: Download specific Magento version from Composer to the container, with optional arguments of the type ("community" [default], "enterprise", or "mageos") and version ([default] is defined in `bin/download`). Ex. `bin/download mageos` or `bin/download enterprise 2.4.8`
- `bin/ece-patches`: Run the Cloud Patches CLI. Ex: `bin/ece-tools apply`
- `bin/fixowns`: This will fix filesystem ownerships within the container.
- `bin/fixperms`: This will fix filesystem permissions within the container.
Expand Down Expand Up @@ -359,7 +334,7 @@ It is recommended to keep your root docker config files in one repository, and y
- `bin/setup-pwa-studio-sampledata`: This script makes it easier to install Venia sample data. Pass in your base site domain, otherwise the default `master-7rqtwti-mfwmkrjfqvbjk.us-4.magentosite.cloud` will be used. Ex: `bin/setup-pwa-studio-sampledata magento.test`.
- `bin/setup-ssl`: Generate an SSL certificate for one or more domains. Ex. `bin/setup-ssl magento.test foo.test`
- `bin/setup-ssl-ca`: Generate a certificate authority and copy it to the host.
- `bin/spx`: Disable or enable output compression to enable or disbale SPX. Accepts params `disable` (default) or `enable`. Ex. `bin/spx enable`
- `bin/spx`: Disable or enable output compression to enable or disable SPX. Accepts params `disable` (default) or `enable`. Ex. `bin/spx enable`
- `bin/start`: Start all containers, good practice to use this instead of `docker-compose up -d`, as it may contain additional helpers.
- `bin/status`: Check the container status.
- `bin/stop`: Stop all project containers.
Expand Down Expand Up @@ -394,6 +369,21 @@ rm -rf yourproject

Then, create your new project directory again so you can attempt the install process again. The `bin/removeall` command removes all previous Docker containers & volumes related to the specific project directory you are within. You can then attempt the install process again.

### Accessing the Magento Backend

After successfully installing the Magento environment, you can access the backend by following these steps:

1. Open your web browser and go to the following URL: `https://magento.test/admin/`.

2. Use the following default credentials to log in:
- **Username:** `john.smith`
- **Password:** `password123`

3. Upon logging in, you might be prompted to configure Two-Factor Authentication (2FA). This emails you a code to log in with (which you can check with Mailcatcher by visiting `http://{yourdomain}:1080`). By default, the email address used for this purpose is:
- **Email:** `john.smith@gmail.com`

If you are testing in a local development environment and wish to disable 2FA, you can do so by installing [Mark's DisableTwoFactorAuth module](https://github.com/markshust/magento2-module-disabletwofactorauth).

### Caching

For an improved developer experience, caches are automatically refreshed when related files are updated, courtesy of [cache-clean](https://github.com/mage2tv/magento-cache-clean). This means you can keep all of the standard Magento caches enabled, and this script will only clear the specific caches needed, and only when necessary.
Expand Down
1 change: 1 addition & 0 deletions compose/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ help:
@echo "$(call format,dev-urn-catalog-generate,'Generate URNs for PHPStorm and remap paths to local host.')"
@echo "$(call format,devconsole,'Alias for n98-magerun2 dev:console.')"
@echo "$(call format,docker-compose,'Support V1 (`docker-compose`) and V2 (`docker compose`) docker compose command, and use custom configuration files.')"
@echo "$(call format,docker-start,'Start the Docker application (either Orbstack or Docker Desktop)"
@echo "$(call format,docker-stats,'Display status for CPU$(comma) memory usage$(comma) and memory limit of currently-running Docker containers.')"
@echo "$(call format,download,'Download & extract specific Magento version to the src directory.')"
@echo "$(call format,ece-patches,'Run the Cloud Patches CLI.')"
Expand Down
11 changes: 11 additions & 0 deletions compose/bin/cron
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
#!/usr/bin/env bash
[ -z "$1" ] && echo "Please specify a service operation (start|stop|status|restart|reload|force-reload)" && exit

if [ "$1" == "start" ]; then
# Create the .cron-enabled file when starting cron
bin/cli touch /var/www/html/var/.cron-enabled
fi

if [ "$1" == "stop" ]; then
# Remove the .cron-enabled file when stopping cron
bin/cli rm -f /var/www/html/var/.cron-enabled
fi

bin/root service cron "$@"
bin/root touch /var/www/html/var/.setup_cronjob_status /var/www/html/var/.update_cronjob_status
bin/root chown app:app /var/www/html/var/.setup_cronjob_status /var/www/html/var/.update_cronjob_status
53 changes: 53 additions & 0 deletions compose/bin/docker-start
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#!/usr/bin/env bash

# Function to check if Docker daemon is running
docker_running() {
docker stats --no-stream &> /dev/null
return $?
}

# Check if OrbStack is installed and not running
if [ -d "/Applications/OrbStack.app" ]; then
echo "* OrbStack is installed"

if (! docker_running); then
echo "* Starting OrbStack..."
open /Applications/OrbStack.app

# Wait until Docker daemon is running via OrbStack
while (! docker_running); do
echo "* Waiting for OrbStack to initialize Docker..."
sleep 2
done

echo "* Docker is now running via OrbStack"
exit 0
else
echo "* Docker is already running (possibly via OrbStack)"
exit 0
fi
fi

# Check if Docker Desktop is installed
if [ -d "/Applications/Docker.app" ]; then
echo "* Docker Desktop is installed"

# Check if Docker is running
if (! docker_running); then
echo "* Starting Docker Desktop..."
open /Applications/Docker.app

# Wait until Docker daemon is running
while (! docker_running); do
echo "* Waiting for Docker Desktop to initialize..."
sleep 2
done

echo "* Docker Desktop is now running"
else
echo "* Docker is already running"
fi
else
echo "* Docker Desktop is not installed. Please install Docker Desktop or OrbStack."
exit 1
fi
2 changes: 1 addition & 1 deletion compose/bin/setup-ssl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
[ -z "$1" ] && echo "Please specify a domain (ex. mydomain.test)" && exit
[ $# -eq 0 ] && echo "Please specify at least one domain (ex. mydomain.test)" && exit

# Generate certificate authority if not already setup
if ! bin/docker-compose exec -T -u root app cat /root/.local/share/mkcert/rootCA.pem | grep -q 'BEGIN CERTIFICATE'; then
Expand Down
6 changes: 6 additions & 0 deletions compose/bin/start
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,10 @@ bin/docker-compose up -d --remove-orphans "$@"
## Then uncomment the below line (and leave uncommented) to start the agent automatically with bin/start:
#bin/root /etc/init.d/blackfire-agent start

# Check if cron was previously enabled and restart it if needed
if bin/cli test -f /var/www/html/var/.cron-enabled; then
echo "Cron was previously enabled, restarting cron service..."
bin/cron start
fi

bin/cache-clean --watch
2 changes: 1 addition & 1 deletion compose/compose.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
## Mark Shust's Docker Configuration for Magento
## (https://github.com/markshust/docker-magento)
##
## Version 50.0.0
## Version 51.0.0

## To use SSH, see https://github.com/markshust/docker-magento#ssh
## Linux users, see https://github.com/markshust/docker-magento#linux
Expand Down
3 changes: 3 additions & 0 deletions compose/env/elasticsearch.env
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
ES_HOST=elasticsearch
ES_PORT=9200

# Compatibility with ARM64/Apple M-series chips
_JAVA_OPTIONS="-XX:UseSVE=0"
3 changes: 3 additions & 0 deletions compose/env/opensearch.env
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@ OPENSEARCH_PORT=9200

# Prevent security patch conflicts with core M2 code
DISABLE_SECURITY_PLUGIN=true

# Compatibility with ARM64/Apple M-series chips
_JAVA_OPTIONS="-XX:UseSVE=0"
2 changes: 1 addition & 1 deletion images/nginx/1.24/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
FROM nginx:1.24-alpine
MAINTAINER Mark Shust <mark@shust.com>
LABEL maintainer="Mark Shust <mark@shust.com>"

ARG APP_ID=1000

Expand Down
2 changes: 1 addition & 1 deletion images/nginx/1.24/conf/nginx.conf
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ http {

#gzip on;

client_max_body_size 20M;
client_max_body_size 100M;

include /etc/nginx/conf.d/*.conf;
}
26 changes: 7 additions & 19 deletions images/php/8.1/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ RUN groupadd -g "$APP_ID" app \
RUN mkdir -p /etc/nginx/html /var/www/html /sock \
&& chown -R app:app /etc/nginx /var/www /usr/local/etc/php/conf.d /sock

RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash -

RUN apt-get update && apt-get install -y \
cron \
Expand Down Expand Up @@ -42,26 +42,14 @@ RUN apt-get update && apt-get install -y \
&& rm -rf /var/lib/apt/lists/*

RUN pecl channel-update pecl.php.net && pecl install \
redis-6.1.0 \
redis-6.2.0 \
ssh2-1.4.1 \
swoole-6.0.0 \
xdebug-3.4.1 \
swoole-6.0.2 \
xdebug-3.4.2 \
imagick-3.8.0RC2 \
&& pecl clear-cache \
&& rm -rf /tmp/pear

RUN imagick_branch="28f27044e435a2b203e32675e942eb8de620ee58" \
&& curl -L https://github.com/Imagick/imagick/archive/$imagick_branch.zip -o imagick.zip \
&& unzip imagick.zip \
&& rm imagick.zip \
&& cd imagick-$imagick_branch \
&& phpize \
&& ./configure --with-php-config=/usr/local/bin/php-config \
&& make \
&& make install \
&& echo "extension=imagick.so" >> $PHP_INI_DIR/conf.d/imagick.ini \
&& cd .. \
&& rm -rf imagick-$imagick_branch

RUN docker-php-ext-configure \
gd --with-freetype --with-jpeg --with-webp \
&& docker-php-ext-install \
Expand Down Expand Up @@ -99,15 +87,15 @@ RUN version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \
&& mv /tmp/blackfire/blackfire-*.so $(php -r "echo ini_get ('extension_dir');")/blackfire.so \
&& rm -rf /tmp/blackfire /tmp/blackfire-probe.tar.gz

RUN git clone --branch v0.4.17 --depth=1 https://github.com/NoiseByNorthwest/php-spx.git /usr/lib/php-spx \
RUN git clone --branch v0.4.18 --depth=1 https://github.com/NoiseByNorthwest/php-spx.git /usr/lib/php-spx \
&& cd /usr/lib/php-spx \
&& phpize \
&& ./configure \
&& make \
&& make install

RUN curl -sS https://getcomposer.org/installer | \
php -- --version=2.2.24 --install-dir=/usr/local/bin --filename=composer
php -- --version=2.7.9 --install-dir=/usr/local/bin --filename=composer

COPY conf/blackfire.ini $PHP_INI_DIR/conf.d/blackfire.ini
COPY conf/spx.ini $PHP_INI_DIR/conf.d/spx.ini
Expand Down
Loading