|
|
@ -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} |