commit
9f2c6244cb
4 changed files with 215 additions and 0 deletions
@ -0,0 +1,2 @@ |
|||||
|
MACHINE= |
||||
|
MYSQL_ROOT_PASSWORD= |
@ -0,0 +1 @@ |
|||||
|
.env |
@ -0,0 +1,186 @@ |
|||||
|
#!/bin/bash |
||||
|
set -e |
||||
|
PROJECT=$1 |
||||
|
if [[ -z "${PROJECT}" ]]; then |
||||
|
echo 'Usage: ./create-stack-project PROJECT [SEAFILE_DUMPS_LIB_UUID]'; |
||||
|
exit 1; |
||||
|
fi |
||||
|
|
||||
|
test -f .env || { |
||||
|
echo 'No env'; |
||||
|
exit 1; |
||||
|
} |
||||
|
|
||||
|
echo |
||||
|
|
||||
|
source .env |
||||
|
|
||||
|
P_UID=1000 |
||||
|
P_GID=1000 |
||||
|
|
||||
|
mkdir /opt/stacks/${PROJECT} |
||||
|
|
||||
|
cat << EOF > /opt/stacks/${PROJECT}/compose.yaml |
||||
|
name: ${PROJECT} |
||||
|
services: |
||||
|
nginx: |
||||
|
extends: |
||||
|
file: /opt/structure/docker-compose.base.yml |
||||
|
service: nginx |
||||
|
php: |
||||
|
extends: |
||||
|
file: /opt/structure/docker-compose.base.yml |
||||
|
service: php |
||||
|
build: |
||||
|
args: |
||||
|
- PHP_VERSION=8.1 |
||||
|
workspace: |
||||
|
extends: |
||||
|
file: /opt/structure/docker-compose.base.yml |
||||
|
service: workspace |
||||
|
build: |
||||
|
args: |
||||
|
- PROJECT=\${PROJECT} |
||||
|
- PHP_VERSION=8.1 |
||||
|
expose: |
||||
|
- 22 |
||||
|
working_dir: /var/www/${PROJECT} |
||||
|
volumes: |
||||
|
- /opt/projects/${PROJECT}/profiler:/tmp/profiler |
||||
|
- /opt/projects/${PROJECT}/www:/var/www |
||||
|
mariadb: |
||||
|
extends: |
||||
|
file: /opt/structure/docker-compose.base.yml |
||||
|
service: mariadb |
||||
|
redis: |
||||
|
extends: |
||||
|
file: /opt/structure/docker-compose.base.yml |
||||
|
service: redis |
||||
|
seafile: |
||||
|
extends: |
||||
|
file: /opt/structure/docker-compose.base.yml |
||||
|
service: seafile |
||||
|
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 |
||||
|
structure: |
||||
|
volumes: |
||||
|
seafile: |
||||
|
EOF |
||||
|
|
||||
|
SEAFILE_USER="${MACHINE}-workspace-${PROJECT}@dimti.ru" |
||||
|
SEAFILE_PASS=$(pwgen -s 20 1) |
||||
|
SEAFILE_DUMPS_LIB=$2 |
||||
|
|
||||
|
echo "Seafile credentionals for create new account:" |
||||
|
echo "SEAFILE_USER=${SEAFILE_USER}" |
||||
|
echo "SEAFILE_PASS=${SEAFILE_PASS}" |
||||
|
|
||||
|
cat << EOF > /opt/stacks/${PROJECT}/.env |
||||
|
PROJECT=${PROJECT} |
||||
|
MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} |
||||
|
SEAFILE_USER=${SEAFILE_USER} |
||||
|
SEAFILE_PASS=${SEAFILE_PASS} |
||||
|
SEAFILE_DUMPS_LIB=${SEAFILE_DUMPS_LIB} |
||||
|
EOF |
||||
|
|
||||
|
chown -R $_PUID:$P_GID /opt/stacks/${PROJECT} |
||||
|
|
||||
|
PROJECT_DIR=/opt/projects/${PROJECT} |
||||
|
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 |
||||
|
|
||||
|
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] |
||||
|
EOF |
||||
|
|
||||
|
cat << EOF > ${CONFIG_DIR}/nginx/conf.d/vhosts.conf |
||||
|
upstream php { |
||||
|
server php:9000; |
||||
|
} |
||||
|
map \$http_host \$root { |
||||
|
${PROJECT}.local.wpstudio.ru /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 |
||||
|
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} |
||||
|
chown -R $P_UID:$P_GID ${WWW_DIR} |
@ -0,0 +1,26 @@ |
|||||
|
#!/bin/bash |
||||
|
set -e |
||||
|
|
||||
|
P_UID=1000 |
||||
|
P_GID=1000 |
||||
|
|
||||
|
cd /opt |
||||
|
|
||||
|
mkdir cache |
||||
|
cd cache |
||||
|
mkdir composer JetBrains yarn |
||||
|
|
||||
|
cd /opt |
||||
|
mkdir npm nvm projects pyenv |
||||
|
|
||||
|
mkdir share |
||||
|
cd share |
||||
|
mkdir JetBrains pnpm |
||||
|
|
||||
|
chown -R $P_UID:$P_GID \ |
||||
|
cache \ |
||||
|
npm \ |
||||
|
nvm \ |
||||
|
projects \ |
||||
|
pyenv \ |
||||
|
share |
Write
Preview
Loading…
Cancel
Save
Reference in new issue