* create stack project reorganize to separate scripts
+ pma hosts modify
This commit is contained in:
@ -1,223 +1,42 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
cd $SCRIPT_DIR
|
||||||
|
|
||||||
|
# Список обязательных программ
|
||||||
|
required_programs=(
|
||||||
|
"pwgen"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Проверка каждой программы
|
||||||
|
for program in "${required_programs[@]}"; do
|
||||||
|
if ! command -v "$program" &>/dev/null; then
|
||||||
|
echo "❌ Ошибка: программа '$program' не установлена!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
PROJECT=$1
|
PROJECT=$1
|
||||||
if [[ -z "${PROJECT}" ]]; then
|
if [[ -z "${PROJECT}" ]]; then
|
||||||
echo 'Usage: ./create-stack-project PROJECT [SEAFILE_DUMPS_LIB_UUID]';
|
echo 'Usage: ./create-stack-project PROJECT [SEAFILE_DUMPS_LIB_UUID]';
|
||||||
exit 1;
|
exit 1;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
test -f .env || {
|
source .env || {
|
||||||
echo 'No env';
|
echo "❌ Ошибка: не удалось загрузить .env (файл не существует или содержит ошибки)" >&2;
|
||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
||||||
|
export $(grep -v '^#' .env | cut -d= -f1)
|
||||||
|
|
||||||
echo
|
echo
|
||||||
|
|
||||||
source .env
|
export PROJECT_DIR=${PROJECTS_DIR}/${PROJECT}
|
||||||
|
|
||||||
P_UID=1000
|
. ./stack-project/stack/_make-seafile-service.sh
|
||||||
P_GID=1000
|
|
||||||
|
|
||||||
PROJECT_DIR=/opt/projects/${PROJECT}
|
. ./stack-project/project/_create-configs.sh
|
||||||
CONFIG_DIR=${PROJECT_DIR}/config
|
|
||||||
HOSTFILES_DIR=${PROJECT_DIR}/hostfiles
|
|
||||||
LOGS_DIR=${PROJECT_DIR}/logs
|
|
||||||
MARIADB_DIR=${PROJECT_DIR}/mariadb
|
|
||||||
PROFILER_DIR=${PROJECT_DIR}/profiler
|
|
||||||
SSH_DIR=${PROJECT_DIR}/ssh
|
|
||||||
WWW_DIR=${PROJECT_DIR}/www
|
|
||||||
|
|
||||||
|
. ./stack-project/project/_create-misc-dirs.sh
|
||||||
|
|
||||||
mkdir /opt/stacks/${PROJECT}
|
. ./stack-project/_create-stack-www-project.sh
|
||||||
|
|
||||||
cat << EOF > /opt/stacks/${PROJECT}/compose.yaml
|
|
||||||
services:
|
|
||||||
nginx:
|
|
||||||
extends:
|
|
||||||
file: ./../structure/compose.base.yaml
|
|
||||||
service: nginx
|
|
||||||
php:
|
|
||||||
extends:
|
|
||||||
file: ./../structure/compose.base.yaml
|
|
||||||
service: php
|
|
||||||
workspace:
|
|
||||||
extends:
|
|
||||||
file: ./../structure/compose.base.yaml
|
|
||||||
service: workspace
|
|
||||||
build:
|
|
||||||
args:
|
|
||||||
- INSTALL_NODE=false
|
|
||||||
working_dir: /var/www/\${PROJECT}
|
|
||||||
volumes:
|
|
||||||
- ConfigJetBrains:/home/laradock/.config/JetBrains
|
|
||||||
- BashHistoryLog:/home/laradock/.bash_history
|
|
||||||
- VSCodeServerInsiders:/home/laradock/.vscode-server-insiders
|
|
||||||
secrets:
|
|
||||||
- composer_auth
|
|
||||||
networks:
|
|
||||||
apihole_net:
|
|
||||||
aliases:
|
|
||||||
- workspace.${PROJECT}.saturn
|
|
||||||
mariadb:
|
|
||||||
extends:
|
|
||||||
file: ./../structure/compose.base.yaml
|
|
||||||
service: mariadb
|
|
||||||
redis:
|
|
||||||
extends:
|
|
||||||
file: ./../structure/compose.base.yaml
|
|
||||||
service: redis
|
|
||||||
secrets:
|
|
||||||
user_authorized_keys:
|
|
||||||
file: /opt/projects/\${PROJECT}/ssh/authorized_keys
|
|
||||||
user_ssh_key:
|
|
||||||
file: /opt/projects/\${PROJECT}/ssh/id_ed25519
|
|
||||||
user_ssh_key_pub:
|
|
||||||
file: /opt/projects/\${PROJECT}/ssh/id_ed25519.pub
|
|
||||||
composer_auth:
|
|
||||||
file: /opt/projects/\${PROJECT}/config/composer/auth.json
|
|
||||||
networks:
|
|
||||||
dockge_default:
|
|
||||||
external: true
|
|
||||||
pma_default:
|
|
||||||
external: true
|
|
||||||
apihole_net:
|
|
||||||
external: true
|
|
||||||
volumes:
|
|
||||||
ConfigJetBrains:
|
|
||||||
BashHistoryLog:
|
|
||||||
VSCodeServerInsiders:
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Possible PHP_VERSION is 7.4, 8.1, 8.2 & 8.3
|
|
||||||
cat << EOF > /opt/stacks/${PROJECT}/.env
|
|
||||||
PROJECT=${PROJECT}
|
|
||||||
PHP_VERSION=8.3
|
|
||||||
EOF
|
|
||||||
|
|
||||||
SEAFILE_USER="${MACHINE}-${PROJECT}-workspace@dimti.ru"
|
|
||||||
SEAFILE_PASS=$(pwgen -s 20 1)
|
|
||||||
SEAFILE_LIB=$2
|
|
||||||
|
|
||||||
echo "Seafile credentionals for create new account:"
|
|
||||||
echo "SEAFILE_USER: ${SEAFILE_USER}"
|
|
||||||
echo "SEAFILE_PASS: ${SEAFILE_PASS}"
|
|
||||||
|
|
||||||
PROJECT_UPPERCASE=$(echo ${PROJECT} | tr '[:lower:]' '[:upper:]')
|
|
||||||
|
|
||||||
cat << EOF >> /opt/stacks/seafile/.env
|
|
||||||
|
|
||||||
${PROJECT_UPPERCASE}_USER=${SEAFILE_USER}
|
|
||||||
${PROJECT_UPPERCASE}_PASS=${SEAFILE_PASS}
|
|
||||||
${PROJECT_UPPERCASE}_LIB=${SEAFILE_LIB}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
sed -e "s/volumes:/volumes:\n\s\sseafile-$PROJECT:/g" /opt/stacks/seafile/compose.yaml
|
|
||||||
|
|
||||||
cat << EOF >> /opt/stacks/seafile/compose.yaml
|
|
||||||
${PROJECT}:
|
|
||||||
extends:
|
|
||||||
file: ./compose.base.yaml
|
|
||||||
service: seafile
|
|
||||||
volumes:
|
|
||||||
- /opt/projects/${PROJECT}/hostfiles:/library
|
|
||||||
- seafile-${PROJECT}:/seafile
|
|
||||||
environment:
|
|
||||||
SEAF_USERNAME: "\${${PROJECT_UPPERCASE}_USER}"
|
|
||||||
SEAF_PASSWORD: "\${${PROJECT_UPPERCASE}_PASS}"
|
|
||||||
SEAF_LIBRARY: "\${${PROJECT_UPPERCASE}_LIB}"
|
|
||||||
EOF
|
|
||||||
|
|
||||||
chown -R $_PUID:$P_GID /opt/stacks/${PROJECT}
|
|
||||||
|
|
||||||
mkdir -p ${CONFIG_DIR}/composer
|
|
||||||
mkdir -p ${CONFIG_DIR}/mariadb
|
|
||||||
mkdir -p ${CONFIG_DIR}/nginx/conf.d
|
|
||||||
mkdir -p ${CONFIG_DIR}/nginx/includes.d
|
|
||||||
mkdir -p ${CONFIG_DIR}/nginx/ssl.d
|
|
||||||
mkdir -p ${CONFIG_DIR}/redis
|
|
||||||
|
|
||||||
cat << EOF > ${CONFIG_DIR}/composer/auth.json
|
|
||||||
{
|
|
||||||
"github-oauth": {
|
|
||||||
"github.com": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat << EOF > ${CONFIG_DIR}/mariadb/90-mysqld.cnf
|
|
||||||
[mysqld]
|
|
||||||
general_log=OFF
|
|
||||||
general_log_file=/var/log/mariadb/mariadb.log
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat << EOF > ${CONFIG_DIR}/nginx/conf.d/vhosts.conf
|
|
||||||
upstream php {
|
|
||||||
server php:9000;
|
|
||||||
}
|
|
||||||
map \$http_host \$root {
|
|
||||||
${PROJECT}.${DOMAIN_PLACEHOLDER} /var/www/${PROJECT};
|
|
||||||
}
|
|
||||||
server {
|
|
||||||
listen 80 default;
|
|
||||||
root \$root;
|
|
||||||
include includes.d/octobercms.conf;
|
|
||||||
include includes.d/staticfiles.conf;
|
|
||||||
client_max_body_size 300M;
|
|
||||||
large_client_header_buffers 4 32k;
|
|
||||||
location ~ ^/index.php {
|
|
||||||
fastcgi_pass php;
|
|
||||||
include fastcgi_params;
|
|
||||||
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
|
|
||||||
fastcgi_param SERVER_NAME \$host;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cp /opt/stacks/structure/config/nginx/includes.d/octobercms.conf ${CONFIG_DIR}/nginx/includes.d/
|
|
||||||
cp /opt/stacks/structure/config/nginx/includes.d/staticfiles.conf ${CONFIG_DIR}/nginx/includes.d/
|
|
||||||
|
|
||||||
cat << EOF > ${CONFIG_DIR}/redis/redis-local.conf
|
|
||||||
port 6379
|
|
||||||
tcp-backlog 128
|
|
||||||
protected-mode no
|
|
||||||
stop-writes-on-bgsave-error no
|
|
||||||
databases 4
|
|
||||||
always-show-logo no
|
|
||||||
syslog-enabled yes
|
|
||||||
pidfile /var/run/redis_6379.pid
|
|
||||||
loglevel notice
|
|
||||||
logfile ""
|
|
||||||
EOF
|
|
||||||
|
|
||||||
chown $P_UID:$P_GID -R ${CONFIG_DIR}
|
|
||||||
|
|
||||||
mkdir ${HOSTFILES_DIR}
|
|
||||||
chown $P_UID:$P_GID ${HOSTFILES_DIR}
|
|
||||||
|
|
||||||
mkdir -p ${LOGS_DIR}/mariadb
|
|
||||||
mkdir -p ${LOGS_DIR}/nginx
|
|
||||||
mkdir -p ${LOGS_DIR}/php-fpm
|
|
||||||
|
|
||||||
mkdir ${MARIADB_DIR}
|
|
||||||
mkdir ${PROFILER_DIR}
|
|
||||||
|
|
||||||
mkdir ${SSH_DIR}
|
|
||||||
touch ${SSH_DIR}/authorized_keys
|
|
||||||
ssh-keygen -N "" -t ed25519 -f ${SSH_DIR}/id_ed25519 -C workspace-${PROJECT}@${MACHINE} 2>&1 > /dev/null
|
|
||||||
|
|
||||||
echo "SSH Key:"
|
|
||||||
cat ${SSH_DIR}/id_ed25519.pub
|
|
||||||
echo
|
|
||||||
|
|
||||||
ssh-keyscan -H github.com > ${SSH_DIR}/known_hosts 2>/dev/null
|
|
||||||
chown $P_UID:$P_GID -R ${SSH_DIR}
|
|
||||||
|
|
||||||
mkdir -p ${WWW_DIR}/${PROJECT}
|
|
||||||
|
|
||||||
cat << EOF > ${WWW_DIR}/${PROJECT}/index.php
|
|
||||||
<?php
|
|
||||||
|
|
||||||
phpinfo();
|
|
||||||
EOF
|
|
||||||
|
|
||||||
chown -R $P_UID:$P_GID ${WWW_DIR}
|
|
89
stack-project/_create-stack-www-project.sh
Normal file
89
stack-project/_create-stack-www-project.sh
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Проект должен быть указан родительским скриптом
|
||||||
|
if [ ! -n "$PROJECT" ]; then
|
||||||
|
echo "❌ Проект не указан!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir ${STACKS_DIR}/${PROJECT}
|
||||||
|
|
||||||
|
cat << EOF > ${STACKS_DIR}/${PROJECT}/compose.yaml
|
||||||
|
services:
|
||||||
|
nginx:
|
||||||
|
extends:
|
||||||
|
file: ./../structure/compose.base.yaml
|
||||||
|
service: nginx
|
||||||
|
php:
|
||||||
|
extends:
|
||||||
|
file: ./../structure/compose.base.yaml
|
||||||
|
service: php
|
||||||
|
workspace:
|
||||||
|
extends:
|
||||||
|
file: ./../structure/compose.base.yaml
|
||||||
|
service: workspace
|
||||||
|
build:
|
||||||
|
args:
|
||||||
|
- INSTALL_NODE=false
|
||||||
|
working_dir: /var/www/\${PROJECT}
|
||||||
|
volumes:
|
||||||
|
- ConfigJetBrains:/home/laradock/.config/JetBrains
|
||||||
|
- BashHistoryLog:/home/laradock/.bash_history
|
||||||
|
- VSCodeServerInsiders:/home/laradock/.vscode-server-insiders
|
||||||
|
secrets:
|
||||||
|
- composer_auth
|
||||||
|
networks:
|
||||||
|
apihole_net:
|
||||||
|
aliases:
|
||||||
|
- workspace.${PROJECT}.saturn
|
||||||
|
mariadb:
|
||||||
|
extends:
|
||||||
|
file: ./../structure/compose.base.yaml
|
||||||
|
service: mariadb
|
||||||
|
redis:
|
||||||
|
extends:
|
||||||
|
file: ./../structure/compose.base.yaml
|
||||||
|
service: redis
|
||||||
|
secrets:
|
||||||
|
user_authorized_keys:
|
||||||
|
file: /opt/projects/\${PROJECT}/ssh/authorized_keys
|
||||||
|
user_ssh_key:
|
||||||
|
file: /opt/projects/\${PROJECT}/ssh/id_ed25519
|
||||||
|
user_ssh_key_pub:
|
||||||
|
file: /opt/projects/\${PROJECT}/ssh/id_ed25519.pub
|
||||||
|
composer_auth:
|
||||||
|
file: /opt/projects/\${PROJECT}/config/composer/auth.json
|
||||||
|
networks:
|
||||||
|
dockge_default:
|
||||||
|
external: true
|
||||||
|
pma_default:
|
||||||
|
external: true
|
||||||
|
apihole_net:
|
||||||
|
external: true
|
||||||
|
volumes:
|
||||||
|
ConfigJetBrains:
|
||||||
|
BashHistoryLog:
|
||||||
|
VSCodeServerInsiders:
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Possible PHP_VERSION is 7.4, 8.1, 8.2 & 8.3
|
||||||
|
cat << EOF > ${STACKS_DIR}/${PROJECT}/.env
|
||||||
|
PROJECT=${PROJECT}
|
||||||
|
PHP_VERSION=8.3
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chown -R $_PUID:$P_GID /opt/stacks/${PROJECT}
|
||||||
|
|
||||||
|
|
||||||
|
WWW_DIR=${PROJECT_DIR}/www
|
||||||
|
|
||||||
|
mkdir -p ${WWW_DIR}/${PROJECT}
|
||||||
|
|
||||||
|
cat << EOF > ${WWW_DIR}/${PROJECT}/index.php
|
||||||
|
<?php
|
||||||
|
|
||||||
|
phpinfo();
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chown -R $P_UID:$P_GID ${WWW_DIR}
|
74
stack-project/project/_create-configs.sh
Normal file
74
stack-project/project/_create-configs.sh
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Проект должен быть указан родительским скриптом
|
||||||
|
if [ ! -n "$PROJECT" ]; then
|
||||||
|
echo "❌ Проект не указан!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
CONFIG_DIR=${PROJECT_DIR}/config
|
||||||
|
|
||||||
|
mkdir ${CONFIG_DIR}
|
||||||
|
mkdir ${CONFIG_DIR}/composer
|
||||||
|
mkdir ${CONFIG_DIR}/mariadb
|
||||||
|
mkdir ${CONFIG_DIR}/nginx
|
||||||
|
mkdir ${CONFIG_DIR}/nginx/conf.d
|
||||||
|
mkdir ${CONFIG_DIR}/nginx/includes.d
|
||||||
|
mkdir ${CONFIG_DIR}/nginx/ssl.d
|
||||||
|
mkdir ${CONFIG_DIR}/redis
|
||||||
|
|
||||||
|
cat << EOF > ${CONFIG_DIR}/composer/auth.json
|
||||||
|
{
|
||||||
|
"github-oauth": {
|
||||||
|
"github.com": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat << EOF > ${CONFIG_DIR}/mariadb/90-mysqld.cnf
|
||||||
|
[mysqld]
|
||||||
|
general_log=OFF
|
||||||
|
general_log_file=/var/log/mariadb/mariadb.log
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat << EOF > ${CONFIG_DIR}/nginx/conf.d/vhosts.conf
|
||||||
|
upstream php {
|
||||||
|
server php:9000;
|
||||||
|
}
|
||||||
|
map \$http_host \$root {
|
||||||
|
${PROJECT}.${DOMAIN_PLACEHOLDER} /var/www/${PROJECT};
|
||||||
|
}
|
||||||
|
server {
|
||||||
|
listen 80 default;
|
||||||
|
root \$root;
|
||||||
|
include includes.d/octobercms.conf;
|
||||||
|
include includes.d/staticfiles.conf;
|
||||||
|
client_max_body_size 300M;
|
||||||
|
large_client_header_buffers 4 32k;
|
||||||
|
location ~ ^/index.php {
|
||||||
|
fastcgi_pass php;
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
|
||||||
|
fastcgi_param SERVER_NAME \$host;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cp /opt/stacks/structure/config/nginx/includes.d/octobercms.conf ${CONFIG_DIR}/nginx/includes.d/
|
||||||
|
cp /opt/stacks/structure/config/nginx/includes.d/staticfiles.conf ${CONFIG_DIR}/nginx/includes.d/
|
||||||
|
|
||||||
|
cat << EOF > ${CONFIG_DIR}/redis/redis-local.conf
|
||||||
|
port 6379
|
||||||
|
tcp-backlog 128
|
||||||
|
protected-mode no
|
||||||
|
stop-writes-on-bgsave-error no
|
||||||
|
databases 4
|
||||||
|
always-show-logo no
|
||||||
|
syslog-enabled yes
|
||||||
|
pidfile /var/run/redis_6379.pid
|
||||||
|
loglevel notice
|
||||||
|
logfile ""
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chown $P_UID:$P_GID -R ${CONFIG_DIR}
|
24
stack-project/project/_create-misc-dirs.sh
Normal file
24
stack-project/project/_create-misc-dirs.sh
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Проект должен быть указан родительским скриптом
|
||||||
|
if [ ! -n "$PROJECT" ]; then
|
||||||
|
echo "❌ Проект не указан!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
HOSTFILES_DIR=${PROJECT_DIR}/hostfiles
|
||||||
|
mkdir ${HOSTFILES_DIR}
|
||||||
|
chown $P_UID:$P_GID ${HOSTFILES_DIR}
|
||||||
|
|
||||||
|
LOGS_DIR=${PROJECT_DIR}/logs
|
||||||
|
mkdir ${LOGS_DIR}
|
||||||
|
mkdir ${LOGS_DIR}/mariadb
|
||||||
|
mkdir ${LOGS_DIR}/nginx
|
||||||
|
mkdir ${LOGS_DIR}/php-fpm
|
||||||
|
|
||||||
|
MARIADB_DIR=${PROJECT_DIR}/mariadb
|
||||||
|
mkdir ${MARIADB_DIR}
|
||||||
|
|
||||||
|
PROFILER_DIR=${PROJECT_DIR}/profiler
|
||||||
|
mkdir ${PROFILER_DIR}
|
20
stack-project/project/_create-ssh-dir.sh
Normal file
20
stack-project/project/_create-ssh-dir.sh
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Проект должен быть указан родительским скриптом
|
||||||
|
if [ ! -n "$PROJECT" ]; then
|
||||||
|
echo "❌ Проект не указан!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SSH_DIR=${PROJECT_DIR}/ssh
|
||||||
|
mkdir ${SSH_DIR}
|
||||||
|
touch ${SSH_DIR}/authorized_keys
|
||||||
|
ssh-keygen -N "" -t ed25519 -f ${SSH_DIR}/id_ed25519 -C workspace-${PROJECT}@${MACHINE} 2>&1 > /dev/null
|
||||||
|
|
||||||
|
echo "SSH Key:"
|
||||||
|
cat ${SSH_DIR}/id_ed25519.pub
|
||||||
|
echo
|
||||||
|
|
||||||
|
ssh-keyscan -H github.com > ${SSH_DIR}/known_hosts 2>/dev/null
|
||||||
|
chown $P_UID:$P_GID -R ${SSH_DIR}
|
41
stack-project/stack/_make-safile-service.sh
Normal file
41
stack-project/stack/_make-safile-service.sh
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Проект должен быть указан родительским скриптом
|
||||||
|
if [ ! -n "$PROJECT" ]; then
|
||||||
|
echo "❌ Проект не указан!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SEAFILE_USER="${MACHINE}-${PROJECT}-workspace@dimti.ru"
|
||||||
|
SEAFILE_PASS=$(pwgen -s 20 1)
|
||||||
|
SEAFILE_LIB=$2
|
||||||
|
|
||||||
|
echo "Seafile credentionals for create new account:"
|
||||||
|
echo "SEAFILE_USER: ${SEAFILE_USER}"
|
||||||
|
echo "SEAFILE_PASS: ${SEAFILE_PASS}"
|
||||||
|
|
||||||
|
PROJECT_UPPERCASE=$(echo ${PROJECT} | tr '[:lower:]' '[:upper:]')
|
||||||
|
|
||||||
|
cat << EOF >> ${STACKS_DIR}/seafile/.env
|
||||||
|
|
||||||
|
${PROJECT_UPPERCASE}_USER=${SEAFILE_USER}
|
||||||
|
${PROJECT_UPPERCASE}_PASS=${SEAFILE_PASS}
|
||||||
|
${PROJECT_UPPERCASE}_LIB=${SEAFILE_LIB}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
sed -e "s/volumes:/volumes:\n\s\sseafile-$PROJECT:/g" /opt/stacks/seafile/compose.yaml
|
||||||
|
|
||||||
|
cat << EOF >> /opt/stacks/seafile/compose.yaml
|
||||||
|
${PROJECT}:
|
||||||
|
extends:
|
||||||
|
file: ./compose.base.yaml
|
||||||
|
service: seafile
|
||||||
|
volumes:
|
||||||
|
- /opt/projects/${PROJECT}/hostfiles:/library
|
||||||
|
- seafile-${PROJECT}:/seafile
|
||||||
|
environment:
|
||||||
|
SEAF_USERNAME: "\${${PROJECT_UPPERCASE}_USER}"
|
||||||
|
SEAF_PASSWORD: "\${${PROJECT_UPPERCASE}_PASS}"
|
||||||
|
SEAF_LIBRARY: "\${${PROJECT_UPPERCASE}_LIB}"
|
||||||
|
EOF
|
50
stack-project/stack/_modify-pma-hosts.sh
Normal file
50
stack-project/stack/_modify-pma-hosts.sh
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Проект должен быть указан родительским скриптом
|
||||||
|
if [ ! -n "$PROJECT" ]; then
|
||||||
|
echo "❌ Проект не указан!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
PMA_ENV_FILE="${STACKS_DIR}/pma/.env"
|
||||||
|
|
||||||
|
# Проверяем, существует ли файл .env
|
||||||
|
if [ ! -f "$PMA_ENV_FILE" ]; then
|
||||||
|
echo "❌ Файл $PMA_ENV_FILE не найден!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Временный файл для изменений
|
||||||
|
TMP_FILE=$(mktemp)
|
||||||
|
|
||||||
|
# Обрабатываем каждую строку
|
||||||
|
while IFS= read -r line; do
|
||||||
|
case "$line" in
|
||||||
|
HOSTS=*)
|
||||||
|
current_hosts=${line#HOSTS=}
|
||||||
|
if [[ ! "$current_hosts" =~ "$PROJECT-mariadb-1" ]]; then
|
||||||
|
echo "HOSTS=$current_hosts,$PROJECT-mariadb-1" >> "$TMP_FILE"
|
||||||
|
else
|
||||||
|
echo "$line" >> "$TMP_FILE"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
VERBOSES=*)
|
||||||
|
current_verboses=${line#VERBOSES=}
|
||||||
|
if [[ ! "$current_verboses" =~ "$PROJECT" ]]; then
|
||||||
|
echo "VERBOSES=$current_verboses,$PROJECT" >> "$TMP_FILE"
|
||||||
|
else
|
||||||
|
echo "$line" >> "$TMP_FILE"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "$line" >> "$TMP_FILE"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done < "$PMA_ENV_FILE"
|
||||||
|
|
||||||
|
# Перемещаем временный файл на место оригинального
|
||||||
|
mv "$TMP_FILE" "$PMA_ENV_FILE"
|
||||||
|
|
||||||
|
echo "✅ Файл $PMA_ENV_FILE обновлён:"
|
||||||
|
cat "$PMA_ENV_FILE"
|
Reference in New Issue
Block a user