3.9 KiB
update-compose-config.sh Documentation
Overview
The update-compose-config.sh script functionality is now integrated into auto-sys-deploy.sh. It's designed to update the docker-compose.app.yml file on a proxy server, specifically for managing FRP (Fast Reverse Proxy) server configurations. It adds or updates port mappings and Traefik labels for new or existing instances, and can optionally restart the Docker Compose service. The script now handles dynamic proxy configurations based on environment variables rather than fixed rad, ssh, web proxies.
Features
- Command-line argument parsing for configuration parameters
- Port configuration management in docker-compose files
- Traefik label configuration for HTTP/HTTPS routing
- Backup creation before making changes
- Status checking (not_found, up_to_date, outdated, incomplete)
- Automatic service restart capability
- Safe configuration updates with validation
Functions
Core Functions
parse_args(): Parses command-line arguments to configure instance parameterscheck_ports_config_status(): Checks if ports configuration is currentcheck_labels_config_status(): Checks if labels configuration is currentupdate_ports_config(): Updates or adds port mappings in the compose fileupdate_labels_config(): Updates or adds Traefik labels in the compose filerestart_docker_compose(): Restarts the Docker Compose service
Utility Functions
usage(): Displays help information and usage examplesfind_section_insertion_point(): Determines where to insert new configurationsupdate_compose_config(): Main function that coordinates all updates
Usage
./update-compose-config.sh [OPTIONS]
Options:
-f, --file FILE Path to docker-compose.app.yml (default: /data/ssd/rvs-prxy/frps/apps/zzthis/docker-compose.app.yml)
-i, --instance NAME Instance name for the configuration
-r, --rad-port PORT Remote port for rad proxy (for backward compatibility)
-s, --ssh-port PORT Remote port for ssh proxy (for backward compatibility)
-w, --web-port PORT Remote port for web proxy (for backward compatibility)
-d, --domain DOMAIN Domain name for Traefik routing
-h, --help Show this help message
Example:
./update-compose-config.sh -i myinstance -r 8779 -s 13076 -w 13077 -d example.com
Parameters
- COMPOSE_FILE: Path to the docker-compose.app.yml file (default:
/data/ssd/rvs-prxy/frps/apps/zzthis/docker-compose.app.yml) - INSTANCE_NAME: Name of the instance being configured
- RAD_PORT: Remote port for rad proxy
- SSH_PORT: Remote port for SSH proxy
- WEB_PORT: Remote port for web proxy
- DOMAIN_NAME: Domain name for Traefik routing rules
Configuration Sections
The script manages two main configuration sections in the docker-compose file:
Ports Section
- Adds port mappings in the format:
<REMOTE_PORT>:<REMOTE_PORT>/tcp - Marked with comment markers for easy identification and updates
Labels Section
- Configures Traefik routing rules for HTTP and HTTPS
- Sets up TLS with Let's Encrypt certificate resolver
- Configures load balancer to route to the appropriate web port
Architecture
The script uses strategic comment markers to identify and update specific sections:
# <instance> Self-hosting ports ====# <instance> Self-hosting labels ====# =========================
This allows for precise updates without affecting other configurations in the file.
Safety Features
- Creates timestamped backups before making changes
- Validates required arguments before proceeding
- Checks configuration status before updating
- Provides option to restart services after configuration
- Safe insertion and removal of configuration blocks
Service Restart
The script can optionally restart the Docker Compose service after making changes, with support for custom start/stop scripts or standard docker-compose commands.