curl -sSL https://raw.githubusercontent.com/abs-technology/joomla/main/docker-compose.yml > docker-compose.yml
curl -sSL https://raw.githubusercontent.com/abs-technology/joomla/main/env.example > .env
# Edit .env — set strong passwords (min 12 characters)
mkdir -p data/joomla data/joomla-backups post-init.d
chown -R 1000:1000 data/joomla data/joomla-backups
docker compose up -d
Or from this repository:
cp env.example .env
# Edit .env — set strong passwords (min 12 characters)
mkdir -p data/joomla data/joomla-backups post-init.d
chown -R 1000:1000 data/joomla data/joomla-backups
make up
Open http://localhost/administrator/ (or http://<server-ip>/administrator/) and log in with credentials from .env.
Image: abstechnology/joomla-standard:6.1.2-r1
docker-compose.yml ← MariaDB 12.3.2 + Joomla app
env.example ← secrets & runtime knobs
data/joomla ← bind mount → /var/www/html
data/joomla-backups ← upgrade snapshots
post-init.d/ ← optional first-boot scripts
| Host path | Container path | Purpose |
|---|---|---|
./data/joomla | /var/www/html | Joomla site files |
./data/joomla-backups | /var/www/joomla-backups | Upgrade snapshots |
./post-init.d | /docker-entrypoint-init.d | Optional one-shot init scripts |
Host bind mounts should be owned by UID/GID 1000 so the container user can write site content.
Containers: abs-joomla (app) and abs-joomla-db (MariaDB) on network joomla_network. Ports: 80→8080, 443→8443.
See env.example for the full list. Key variables:
| Variable | Default | Description |
|---|---|---|
JOOMLA_USERNAME | admin | Administrator username |
JOOMLA_PASSWORD | (required) | Admin password (min 12 chars) |
JOOMLA_EMAIL | — | Admin email |
JOOMLA_SITE_NAME | ABS Technology Joomla CMS | Site name |
JOOMLA_HOST | localhost | Public hostname hint |
JOOMLA_DATABASE_HOST | mariadb | DB hostname (Compose service name) |
JOOMLA_REVERSEPROXY / JOOMLA_SSLPROXY | no | Trust proxy / TLS termination |
JOOMLA_AUTO_DB_UPGRADE | no | Auto-run DB upgrade after image bump |
JOOMLA_BACKUP_DIR | /var/www/joomla-backups | Snapshot location |
JOOMLA_UPGRADE_RETENTION | 5 | Snapshots to retain |
MARIADB_ROOT_PASSWORD | (required) | MariaDB root password |
MARIADB_PASSWORD | (required) | App DB user password |
PHP_MEMORY_LIMIT | 512M | PHP memory limit |
PHP_UPLOAD_MAX_FILESIZE / PHP_POST_MAX_SIZE | 256M | Upload limits |
CHANGE_THIS_* placeholder before go-live. Generate with openssl rand -base64 32.JOOMLA_REVERSEPROXY=yes and JOOMLA_SSLPROXY=yes. Container port 443 uses a self-signed cert for lab use only../data/joomla, ./data/joomla-backups, and the mariadb_data volume on a schedule. Test restores in staging.JOOMLA_AUTO_DB_UPGRADE=no until upgrades are validated in staging; image bumps snapshot DB + code before replacing files..env. Keep file permissions restricted on the host.| Target | Command | Description |
|---|---|---|
| Help | make help | List available targets |
| Build | make build | Local image build |
| Start | make up | Create data dirs + docker compose up -d |
| Stop | make down | Stop containers (keep DB volume + Joomla data) |
| Remove | make remove | Stop containers, delete MariaDB volume + data/joomla* |
| Logs | make logs | Follow app logs |
| Shell | make shell | Shell into the app container |
Place files in host ./post-init.d/ (Compose mounts this at /docker-entrypoint-init.d):
*.sh — shell scripts*.php — PHP scripts*.sql / *.sql.gz — MariaDB importsJoomla! is licensed under the GNU General Public License version 2 or later (GPL-2.0+). See LICENSE and LICENSE-INFORMATION.md.
Joomla!® is a registered trademark of Open Source Matters, Inc.
Content type
Image
Digest
sha256:f1f26d712…
Size
177.8 MB
Last updated
2 months ago
docker pull abstechnology/joomla-standard:6.1.2-r2