From a8c2c448f62a7f39a1e79a143d45a2b61a0156f3 Mon Sep 17 00:00:00 2001 From: Jonathan Rosenbaum Date: Sun, 8 Jun 2025 18:13:47 +0000 Subject: [PATCH] Updates and fancier --- README.md | 120 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 71 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 77d9d73..a37cc1f 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,30 @@ -# ComposePress +# ComposePress -A Docker-based toolkit that streamlines WordPress upgrades using official images. Provides pre-configured docker-compose files, Dockerfiles, and standardized procedures to make WordPress maintenance more predictable and reliable. +ComposePress is a **Docker-based toolkit** designed to streamline WordPress upgrades using official images. It provides **pre-configured Docker Compose files**, Dockerfiles, and standardized procedures to make WordPress maintenance more predictable and reliable. -## Project Configuration +--- -### Project Name -This project requires a project name and wordpress version, which should be defined in an `.env` file: +## 🚀 Project Configuration + +### **Project Name & WordPress Version** +Define a **unique project name** and **WordPress version** in the `.env` file: ```bash COMPOSE_PROJECT_NAME=test WORDPRESS_VERSION=6-fpm ``` -### Database Host Configuration -To avoid conflicts, use the following format for the database host: -```bash -WORDPRESS_DB_HOST=${COMPOSE_PROJECT_NAME}-database-1:3306 -``` +--- -## Environment Variables +## 🛠 Environment Variables -### Docker Images +### **Docker Images** ```bash -# Web and Database Images +# Web & Database Images IMAGE_WEB=test_web_staging IMAGE_DATABASE=mariadb:11.5 ``` -### Let's Encrypt Configuration +### **Let's Encrypt Configuration** ```bash VIRTUAL_HOST=test.test.org LETSENCRYPT_HOST=test.test.org @@ -34,9 +32,9 @@ LETSENCRYPT_EMAIL=test@test.com LETSENCRYPT_TEST=true ``` -### Database Configuration +### **Database Configuration** ```bash -WORDPRESS_DB_HOST=${COMPOSE_PROJECT_NAME}-database-1:3306 +WORDPRESS_DB_HOST=database_${COMPOSE_PROJECT_NAME}:3306 WORDPRESS_DB_PASSWORD=wordpress MYSQL_ROOT_PASSWORD=wordpress MYSQL_DATABASE=wordpress @@ -44,83 +42,107 @@ MYSQL_USER=wordpress MYSQL_PASSWORD=wordpress ``` -### Volume Configuration +### **Volume Configuration** ```bash -# External Volumes +# External Volumes (Persist Data) DB_VOLUME=test_db_staging CONTENT_VOLUME=test_content_staging -# Recreated Volumes +# Recreated Volumes (Rebuild On Setup) HTML_VOLUME=test_html_staging ``` -## Usage +--- -### Initialize project with unique COMPOSE_PROJECT_NAME +## 📂 Configuration Files -[./generate-compose-nginx.sh](generate-compose-nginx.sh) +Two important Nginx configuration files are available in the project directory: +```bash +./default.conf # Automatically generated each time the script runs +./nginx.conf # Manually customizable configuration +``` -### Upgrade Process +⚠️ **Warning:** `default.conf` is regenerated every time `generate-compose-nginx.sh` runs. +Make a backup before modifying if you plan to change the project name. -1. Stop the current containers and remove volumes: +--- + +## 🚀 Usage + +### **Initialize a Project with a Unique `COMPOSE_PROJECT_NAME`** +Run the following script to generate the required files: +```bash +./generate-compose-nginx.sh +``` + +--- + +## 🔄 Upgrade Process + +### **1️⃣ Stop Containers & Clean Up** ```bash docker compose down -v -# Optional Steps for testing and development - -# Remove external database and content volume (DANGER: only do this if you have backed up these two volumes) +# Optional: Remove external database & content volume (DANGER: Only do this if you have backups) grep -E 'DB_VOLUME|CONTENT_VOLUME' .env | cut -d '=' -f2 | xargs -I {} sh -c 'docker volume rm {} 2>/dev/null; docker volume create {}' -# Remove Wordpress Image +# Optional: Remove WordPress Image docker rmi $(grep IMAGE_WEB .env | cut -d '=' -f2) - ``` -2. Update WordPress version: - - Modify version in `Dockerfile.wordpress_fpm` - - Update `IMAGE_WEB` in `.env` file - -3. Build and reinstall the new environment: +### **2️⃣ Update WordPress Version** +Modify the version in .env: ```bash -# Build custom Wordpress image +WORDPRESS_VERSION=7-fpm +``` + +### **3️⃣ Build & Deploy** +```bash +# Build custom WordPress image docker compose -f docker-compose.first.yml build -# Install or Upgrade Wordpress /var/www/html volume (not external) from custom Wordpress image +# Install or upgrade WordPress volume from custom image docker compose -f docker-compose.first.yml up -d -# Stop and remove Wordpress container, but keep html volume +# Stop WordPress container (but keep HTML volume) docker compose -f docker-compose.first.yml down # Start production environment docker compose up -d ``` -4. Migrate content (e.g., themes, plugins) after a new installation or upgrade: +### **4️⃣ Migrate Content (Themes, Plugins)** ```bash -# In the wordpress service, copy new content to production +# Copy new content to production cp -a wp-content-new/* wp-content/ -# Verify permissions on wp-content directory +# Verify permissions on the wp-content directory chmod -R [appropriate-permissions] wp-content/ ``` -5. Optional: Update database if needed: +### **5️⃣ Optional: Database Updates** ```bash -(In the database container) +# Inside the database container apt-get update && \ apt-get install -y mariadb-client && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* -(From the host) +# From the host ./update-db ``` -## Requirements -Docker +--- -## Contributing -@bike +## 📌 Requirements +- Docker -## License -[GNU GENERAL PUBLIC LICENSE](LICENSE) +--- + +## 🤝 Contributing +For contributions, reach out to [@bike](https://github.com/bike). + +--- + +## 📜 License +GNU GENERAL PUBLIC LICENSE