2026-01-12 15:58:50 -05:00
2026-01-12 15:51:06 -05:00
2026-01-12 15:51:06 -05:00
2026-01-12 15:51:06 -05:00
2026-01-12 15:51:06 -05:00
2026-01-12 15:51:06 -05:00
2026-01-12 15:51:06 -05:00

How It Works

  1. Create Environment Files:

    • Copy config/example.env to a new file (e.g., config/testing.env) and edit the variables.
  2. Run setup.sh:

    • Pass the .env file as an argument:
      ./setup.sh config/testing.env
      
  3. Generated Output:

    • setup.sh replaces all {PROJECT_NAME} placeholders dynamically.
    • Example for PROJECT_NAME=testing:
      • APP_SERVICE_NAME becomes app-testing.
      • MYSQL_DATABASE becomes testing_db.

Examples

Website

This is how you would set up a website that uses Laravel on example.com

# General Configurations
PROJECT_NAME=example
BASE_URL=com
APP_SERVICE_NAME=app-{PROJECT_NAME}

# Network
NETWORK_NAME={PROJECT_NAME}_network

# Nginx
NGINX_SERVICE_NAME=nginx-{PROJECT_NAME}
NGINX_PORT=80

# Database Configuration
MYSQL_SERVICE_NAME=mysql-{PROJECT_NAME}
MYSQL_DATABASE={PROJECT_NAME}_db
MYSQL_USER={PROJECT_NAME}_user
MYSQL_PASSWORD=my_password
MYSQL_ROOT_PASSWORD=root_password
MYSQL_PORT=3306

# Dockerfile Configurations
PHP_VERSION=8.3-fpm
PHP_EXTENSIONS=pdo_mysql mbstring exif pcntl bcmath gd

With Subdomain

For this example we'll set up a laravel site at the subdomain testing.example.com

Input: config/testing.example.com.env:

# General Configurations
PROJECT_NAME=testing
BASE_URL=example.com
APP_SERVICE_NAME=app-{PROJECT_NAME}

# Network
NETWORK_NAME={PROJECT_NAME}_network

# Nginx
NGINX_SERVICE_NAME=nginx-{PROJECT_NAME}
NGINX_PORT=4444

# Database Configuration
MYSQL_SERVICE_NAME=mysql-{PROJECT_NAME}
MYSQL_DATABASE={PROJECT_NAME}_db
MYSQL_USER={PROJECT_NAME}_user
MYSQL_PASSWORD=my_password
MYSQL_ROOT_PASSWORD=root_password
MYSQL_PORT=4445

# Dockerfile Configurations
PHP_VERSION=8.3-fpm
PHP_EXTENSIONS=pdo_mysql mbstring exif pcntl bcmath gd

Command:

./setup.sh config/testing.env

Output Directory:

testing.example.com/
├── Dockerfile
├── docker-compose.yml
├── app-volume-testing/
├── nginx-volume-testing/
│   └── default.conf
├── mysql-volume-testing/
Description
No description provided
Readme MIT 38 KiB
Languages
Shell 100%