Browse Source

Update scripts appropritate to new directory structure

master
root 2 days ago
parent
commit
301dd15919
  1. 4
      .env.example
  2. 121
      create-stack-project.sh
  3. 23
      make-base-dirs.sh

4
.env.example

@ -1,2 +1,2 @@
MACHINE=
MYSQL_ROOT_PASSWORD=
MACHINE=raptor
DOMAIN_PLACEHOLDER=raptor.dimti.ru

121
create-stack-project.sh

@ -18,48 +18,54 @@ source .env
P_UID=1000
P_GID=1000
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 /opt/stacks/${PROJECT}
cat << EOF > /opt/stacks/${PROJECT}/compose.yaml
name: ${PROJECT}
services:
nginx:
extends:
file: /opt/structure/docker-compose.base.yml
file: ./../structure/compose.base.yaml
service: nginx
php:
extends:
file: /opt/structure/docker-compose.base.yml
file: ./../structure/compose.base.yaml
service: php
build:
args:
- PHP_VERSION=8.1
workspace:
extends:
file: /opt/structure/docker-compose.base.yml
file: ./../structure/compose.base.yaml
service: workspace
build:
args:
- PROJECT=\${PROJECT}
- PHP_VERSION=8.1
expose:
- 22
working_dir: /var/www/${PROJECT}
- INSTALL_NODE=false
working_dir: /var/www/\${PROJECT}
volumes:
- /opt/projects/${PROJECT}/profiler:/tmp/profiler
- /opt/projects/${PROJECT}/www:/var/www
- 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: /opt/structure/docker-compose.base.yml
file: ./../structure/compose.base.yaml
service: mariadb
redis:
extends:
file: /opt/structure/docker-compose.base.yml
file: ./../structure/compose.base.yaml
service: redis
seafile:
extends:
file: /opt/structure/docker-compose.base.yml
service: seafile
secrets:
user_authorized_keys:
file: /opt/projects/\${PROJECT}/ssh/authorized_keys
@ -72,37 +78,56 @@ secrets:
networks:
dockge_default:
external: true
structure:
pma_default:
external: true
apihole_net:
external: true
volumes:
seafile:
ConfigJetBrains:
BashHistoryLog:
VSCodeServerInsiders:
EOF
SEAFILE_USER="${MACHINE}-workspace-${PROJECT}@dimti.ru"
# 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_DUMPS_LIB=$2
SEAFILE_LIB=$2
echo "Seafile credentionals for create new account:"
echo "SEAFILE_USER=${SEAFILE_USER}"
echo "SEAFILE_PASS=${SEAFILE_PASS}"
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}
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
chown -R $_PUID:$P_GID /opt/stacks/${PROJECT}
sed -e "s/volumes:/volumes:\n\s\sseafile-$PROJECT:/g" /opt/stacks/seafile/compose.yaml
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
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
@ -121,6 +146,8 @@ 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
@ -128,7 +155,7 @@ upstream php {
server php:9000;
}
map \$http_host \$root {
${PROJECT}.local.wpstudio.ru /var/www/${PROJECT};
${PROJECT}.${DOMAIN_PLACEHOLDER} /var/www/${PROJECT};
}
server {
listen 80 default;
@ -177,10 +204,20 @@ 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}

23
make-base-dirs.sh

@ -4,23 +4,22 @@ set -e
P_UID=1000
P_GID=1000
cd /opt
SHARED_DIR=/opt/shared
mkdir cache
cd cache
mkdir composer JetBrains yarn
cd ${SHARED_DIR}
cd /opt
mkdir npm nvm projects pyenv
mkdir cache && cd cache
mkdir composer JetBrains yarn
mkdir share
cd share
mkdir local-share && cd local-share
mkdir JetBrains pnpm
cd ${SHARED_DIR}
mkdir nvm pyenv tmux
cd ${SHARED_DIR}
chown -R $P_UID:$P_GID \
cache \
npm \
local-share
nvm \
projects \
pyenv \
share
pyenv \
Loading…
Cancel
Save