install_wp.sh
· 2.9 KiB · Bash
Brut
#!/bin/bash
# Автор: Федя Серафиев
# ====== ВХОДНИ ДАННИ ОТ ПОТРЕБИТЕЛЯ ======
read -p "👉 Въведи име за контейнера на WordPress [wordpress_app]: " WP_CONTAINER
WP_CONTAINER=${WP_CONTAINER:-wordpress_app}
read -p "👉 Въведи име за контейнера на базата данни [wordpress_db]: " DB_CONTAINER
DB_CONTAINER=${DB_CONTAINER:-wordpress_db}
read -p "👉 Въведи външен порт за достъп до WordPress (напр. 8383): " HOST_PORT
HOST_PORT=${HOST_PORT:-8383}
# ====== ГЕНЕРИРАНЕ НА ПАРОЛИ ======
MYSQL_ROOT_PASSWORD=$(openssl rand -base64 16)
MYSQL_DATABASE="wordpress"
MYSQL_USER="wpuser"
MYSQL_PASSWORD=$(openssl rand -base64 16)
# ====== СЪЗДАВАНЕ НА ДИРЕКТОРИИ ======
mkdir -p config wp-content
# ====== .env ФАЙЛ ======
cat > .env <<EOF
MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE=${MYSQL_DATABASE}
MYSQL_USER=${MYSQL_USER}
MYSQL_PASSWORD=${MYSQL_PASSWORD}
WORDPRESS_DB_HOST=db:3306
EOF
# ====== config/php.ini ======
cat > config/php.ini <<EOF
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
EOF
# ====== docker-compose.yml ======
cat > docker-compose.yml <<EOF
version: '3.8'
services:
db:
image: mysql:8.0
container_name: ${DB_CONTAINER}
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: \${MYSQL_ROOT_PASSWORD:-rootpass}
MYSQL_DATABASE: \${MYSQL_DATABASE:-wordpress}
MYSQL_USER: \${MYSQL_USER:-wpuser}
MYSQL_PASSWORD: \${MYSQL_PASSWORD:-wppass}
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
wordpress:
image: wordpress:latest
container_name: ${WP_CONTAINER}
depends_on:
db:
condition: service_healthy
ports:
- "${HOST_PORT}:80"
restart: always
volumes:
- wordpress:/var/www/html
- ./wp-content:/var/www/html/wp-content
- ./config/php.ini:/usr/local/etc/php/conf.d/custom.ini
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: \${MYSQL_DATABASE:-wordpress}
WORDPRESS_DB_USER: \${MYSQL_USER:-wpuser}
WORDPRESS_DB_PASSWORD: \${MYSQL_PASSWORD:-wppass}
volumes:
db_data:
driver: local
wordpress:
driver: local
EOF
# ====== ИЗВОД ======
echo
echo "✅ Проектът е инициализиран успешно!"
echo "📂 Създадени: docker-compose.yml, .env, config/php.ini, wp-content/"
echo "🌐 Достъп до WordPress: http://localhost:${HOST_PORT}"
echo
echo "🔐 Данни за достъп до базата (също записани в .env):"
echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}"
echo "MYSQL_USER=${MYSQL_USER}"
echo "MYSQL_PASSWORD=${MYSQL_PASSWORD}"
echo
echo "🚀 Стартирай с: docker compose up -d"
| 1 | #!/bin/bash |
| 2 | |
| 3 | # Автор: Федя Серафиев |
| 4 | |
| 5 | # ====== ВХОДНИ ДАННИ ОТ ПОТРЕБИТЕЛЯ ====== |
| 6 | read -p "👉 Въведи име за контейнера на WordPress [wordpress_app]: " WP_CONTAINER |
| 7 | WP_CONTAINER=${WP_CONTAINER:-wordpress_app} |
| 8 | |
| 9 | read -p "👉 Въведи име за контейнера на базата данни [wordpress_db]: " DB_CONTAINER |
| 10 | DB_CONTAINER=${DB_CONTAINER:-wordpress_db} |
| 11 | |
| 12 | read -p "👉 Въведи външен порт за достъп до WordPress (напр. 8383): " HOST_PORT |
| 13 | HOST_PORT=${HOST_PORT:-8383} |
| 14 | |
| 15 | # ====== ГЕНЕРИРАНЕ НА ПАРОЛИ ====== |
| 16 | MYSQL_ROOT_PASSWORD=$(openssl rand -base64 16) |
| 17 | MYSQL_DATABASE="wordpress" |
| 18 | MYSQL_USER="wpuser" |
| 19 | MYSQL_PASSWORD=$(openssl rand -base64 16) |
| 20 | |
| 21 | # ====== СЪЗДАВАНЕ НА ДИРЕКТОРИИ ====== |
| 22 | mkdir -p config wp-content |
| 23 | |
| 24 | # ====== .env ФАЙЛ ====== |
| 25 | cat > .env <<EOF |
| 26 | MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} |
| 27 | MYSQL_DATABASE=${MYSQL_DATABASE} |
| 28 | MYSQL_USER=${MYSQL_USER} |
| 29 | MYSQL_PASSWORD=${MYSQL_PASSWORD} |
| 30 | WORDPRESS_DB_HOST=db:3306 |
| 31 | EOF |
| 32 | |
| 33 | # ====== config/php.ini ====== |
| 34 | cat > config/php.ini <<EOF |
| 35 | upload_max_filesize = 64M |
| 36 | post_max_size = 64M |
| 37 | memory_limit = 256M |
| 38 | EOF |
| 39 | |
| 40 | # ====== docker-compose.yml ====== |
| 41 | cat > docker-compose.yml <<EOF |
| 42 | version: '3.8' |
| 43 | |
| 44 | services: |
| 45 | db: |
| 46 | image: mysql:8.0 |
| 47 | container_name: ${DB_CONTAINER} |
| 48 | restart: always |
| 49 | volumes: |
| 50 | - db_data:/var/lib/mysql |
| 51 | environment: |
| 52 | MYSQL_ROOT_PASSWORD: \${MYSQL_ROOT_PASSWORD:-rootpass} |
| 53 | MYSQL_DATABASE: \${MYSQL_DATABASE:-wordpress} |
| 54 | MYSQL_USER: \${MYSQL_USER:-wpuser} |
| 55 | MYSQL_PASSWORD: \${MYSQL_PASSWORD:-wppass} |
| 56 | healthcheck: |
| 57 | test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] |
| 58 | interval: 10s |
| 59 | timeout: 5s |
| 60 | retries: 5 |
| 61 | |
| 62 | wordpress: |
| 63 | image: wordpress:latest |
| 64 | container_name: ${WP_CONTAINER} |
| 65 | depends_on: |
| 66 | db: |
| 67 | condition: service_healthy |
| 68 | ports: |
| 69 | - "${HOST_PORT}:80" |
| 70 | restart: always |
| 71 | volumes: |
| 72 | - wordpress:/var/www/html |
| 73 | - ./wp-content:/var/www/html/wp-content |
| 74 | - ./config/php.ini:/usr/local/etc/php/conf.d/custom.ini |
| 75 | environment: |
| 76 | WORDPRESS_DB_HOST: db:3306 |
| 77 | WORDPRESS_DB_NAME: \${MYSQL_DATABASE:-wordpress} |
| 78 | WORDPRESS_DB_USER: \${MYSQL_USER:-wpuser} |
| 79 | WORDPRESS_DB_PASSWORD: \${MYSQL_PASSWORD:-wppass} |
| 80 | |
| 81 | volumes: |
| 82 | db_data: |
| 83 | driver: local |
| 84 | wordpress: |
| 85 | driver: local |
| 86 | EOF |
| 87 | |
| 88 | # ====== ИЗВОД ====== |
| 89 | echo |
| 90 | echo "✅ Проектът е инициализиран успешно!" |
| 91 | echo "📂 Създадени: docker-compose.yml, .env, config/php.ini, wp-content/" |
| 92 | echo "🌐 Достъп до WordPress: http://localhost:${HOST_PORT}" |
| 93 | echo |
| 94 | echo "🔐 Данни за достъп до базата (също записани в .env):" |
| 95 | echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" |
| 96 | echo "MYSQL_USER=${MYSQL_USER}" |
| 97 | echo "MYSQL_PASSWORD=${MYSQL_PASSWORD}" |
| 98 | echo |
| 99 | echo "🚀 Стартирай с: docker compose up -d" |