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