Magento 1 reached end of life on June 30, 2020. No official Docker images exist. Do not deploy Magento 1 in production.
OpenMage LTS is the community-maintained fork with security patches.
Note: No official OpenMage Docker image exists. The examples below use community-maintained images or manual builds.
⚠️ Warning: Community images may not be regularly updated. Verify security patches before production use.
version: '3.8'
services:
db:
image: mariadb:10.6
restart: unless-stopped
environment:
MYSQL_DATABASE: magento
MYSQL_USER: magento
MYSQL_PASSWORD: change-me-strong-password
MYSQL_ROOT_PASSWORD: change-me-strong-password
volumes:
- db_data:/var/lib/mysql
networks:
- magento-net
web:
image: openmage/magento-lts:latest # Community-maintained image
restart: unless-stopped
depends_on:
- db
ports:
- "8080:80"
environment:
MAGENTO_DB_HOST: db
MAGENTO_DB_NAME: magento
MAGENTO_DB_USER: magento
MAGENTO_DB_PASSWORD: change-me-strong-password
volumes:
- magento_app:/var/www/html
networks:
- magento-net
volumes:
db_data:
magento_app:
networks:
magento-net:
docker compose up -d
Access at http://YOUR-SERVER:8080
Create a custom Dockerfile based on PHP 8.0+ with OpenMage:
FROM php:8.0-apache
# Install PHP extensions required by Magento 1/OpenMage
RUN apt-get update && apt-get install -y \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
libicu-dev \
libxml2-dev \
libxslt1-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install pdo_mysql mysqli gd intl soap xsl xml \
&& a2enmod rewrite headers ssl \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Install Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Set working directory
WORKDIR /var/www/html
# Clone OpenMage LTS
RUN git clone https://github.com/OpenMage/magento-lts.git . \
&& git checkout v20.2.0 \
&& chown -R www-data:www-data /var/www/html
# Apache configuration for Magento
COPY apache-magento.conf /etc/apache2/sites-available/000-default.conf
EXPOSE 80
version: '3.8'
services:
db:
image: mariadb:10.6
restart: unless-stopped
environment:
MYSQL_DATABASE: magento
MYSQL_USER: magento
MYSQL_PASSWORD: change-me-strong-password
MYSQL_ROOT_PASSWORD: change-me-strong-password
volumes:
- db_data:/var/lib/mysql
networks:
- magento-net
web:
build: .
restart: unless-stopped
depends_on:
- db
ports:
- "8080:80"
volumes:
- magento_app:/var/www/html
networks:
- magento-net
volumes:
db_data:
magento_app:
networks:
magento-net:
docker compose build
docker compose up -d
For development/testing only:
version: '3.8'
services:
db:
image: mariadb:10.6
restart: unless-stopped
environment:
MYSQL_DATABASE: magento
MYSQL_USER: magento
MYSQL_PASSWORD: change-me-strong-password
MYSQL_ROOT_PASSWORD: change-me-strong-password
volumes:
- db_data:/var/lib/mysql
web:
image: php:8.0-apache
restart: unless-stopped
depends_on:
- db
ports:
- "8080:80"
volumes:
- ./app:/var/www/html
command: >
bash -c "
apt-get update &&
apt-get install -y libpng-dev libjpeg-dev libicu-dev libxml2-dev &&
docker-php-ext-install pdo_mysql mysqli gd intl soap xsl &&
a2enmod rewrite headers &&
apache2-foreground
"
Then manually install OpenMage:
git clone https://github.com/OpenMage/magento-lts.git ./app
http://YOUR-SERVER:8080 and complete the web installer