diff --git a/.env.example b/.env.example index 6b08a8a..6d63945 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,2 @@ -MACHINE= -MYSQL_ROOT_PASSWORD= \ No newline at end of file +MACHINE=raptor +DOMAIN_PLACEHOLDER=raptor.dimti.ru \ No newline at end of file diff --git a/create-stack-project.sh b/create-stack-project.sh index 896ffa4..881957d 100755 --- a/create-stack-project.sh +++ b/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 +