From f8b4263b2f0fbc81e329f363942ddee328720aa3 Mon Sep 17 00:00:00 2001 From: ddadmin Date: Fri, 19 Apr 2024 13:46:42 +0300 Subject: [PATCH] update config --- .env | 10 +- .gitignore | 1 + app.sh | 177 ++++++++++++++++++++++++++++++ configs/nginx/conf.d/default.conf | 15 ++- configs/nginx/templates/default | 2 +- configs/nuxt/.env | 11 +- configs/php/.env | 8 +- configs/php/.env.local | 24 +++- configs/php/.env__ | 127 --------------------- docker-compose.yml | 12 +- 10 files changed, 232 insertions(+), 155 deletions(-) create mode 100644 .gitignore create mode 100755 app.sh delete mode 100644 configs/php/.env__ diff --git a/.env b/.env index e44d3cc..46fc932 100644 --- a/.env +++ b/.env @@ -1,10 +1,10 @@ -COMPOSE_PROJECT_NAME=testa -NETWORK=testa +COMPOSE_PROJECT_NAME=teste +NETWORK=teste -FRONT_TAG=test-nuxt -DOTDOT_TAG=test-nuxt +FRONT_TAG=DDB-1256-d +DOTDOT_TAG=DDB-1256-d -MYSQL_PORT=0.0.0.0:3306 +MYSQL_PORT=0.0.0.0:33065 MYSQL_ROOT_PASSWORD=root MYSQL_DATABASE=dot MYSQL_USER=dot diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5f2fcc7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +backups/* diff --git a/app.sh b/app.sh new file mode 100755 index 0000000..86c2dea --- /dev/null +++ b/app.sh @@ -0,0 +1,177 @@ +DIRECTORY=`dirname $0` + +MYSQL_ROOT_PASSWORD=$(grep MYSQL_ROOT_PASSWORD $DIRECTORY"/.env" | xargs) +MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD#*=} + +help() { + echo "run $0 [COMMAND] " + echo ' + "init" - run init flow + "up" - up -d all services + "down" - down all services without volumes + "composer" - run composer ${@:2} + "psalm" - run composer analyse + "php-fixer" - run composer cs + "deptrac" - run composer deptrac + "tests" - run composer tests + "console" - run docker compose exec php ./bin/console ${@:2} + "db" - run mysql shell + "db-create" - crate database + "backup-dev" - + "backup-create" - + "backup-exec" - + "restore-dev" - + "purge-db" - purge database + "restore-db" - restore database from s3 backup + "front" - exec front container + +' +} + +log() { + RED='\e[31m' + GREEN='\e[32m' + + case $2 in + info) + printf "${GREEN}${1}\e[0m\n" + ;; + error) + printf "${RED}${1}\e[0m\n" + ;; + *) + printf "${1}" + ;; + esac +} + +## restore last backup from s3 storage +restoredb() { + log "run restore database" + sudo rclone copy --verbose selectel:backup_db/dot/dot.$(date +%a).sql.gz backups/ + zcat backups/dot.$(date +%a).sql.gz | docker compose exec -T db mysql -uroot -p${MYSQL_ROOT_PASSWORD} dot +} + +checkDockerCompose() { + if ! [ -f "docker-compose.yml" ]; then + log "docker-compose.yml not exist. Run init command" "error" + exit + fi +} + +init() { + dumpfile=$(ls backups/ | sort | tail -1) + if ! [ -f backups/${dumpfile} ]; then + log "put dot.sql to backups directory" "error" + exit + fi + + if ! [ -f ".env" ]; then + log ".env not exist. Run init command" "error" + exit + fi + + up + + docker compose exec php composer install +# docker compose exec front npm i + +# docker compose exec front npm run build + + if ! docker compose exec db mysql -uroot -proot -e "show databases" | grep "dot "; then + createDatabase "dot" + execBackup "dot" ${dumpfile} + fi +} + +up() { + checkDockerCompose + docker compose up -d +} + +down() { + checkDockerCompose + docker compose down +} + +createDatabase() { + docker compose exec db mysql -uroot -p${MYSQL_ROOT_PASSWORD} -e "create database $1" + log "create database $1" "info" +} + +createBackup() { + docker compose exec db mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} $1 > backups/$2.sql +} + +createBackupWithExceptions() { + docker compose exec db mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --ignore-table=dot.ml_calculator_log dot > backups/dot_develop.sql + docker compose exec db mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --no-data dot ml_calculator_log >> backups/dot_develop.sql +} + +execBackup() { + zcat backups/$2 | docker compose exec -T db mysql -uroot -p${MYSQL_ROOT_PASSWORD} $1 + log "exec $2.sql backup" "info" +} + +execDevBackup() { + docker compose exec -T db mysql -uroot -p${MYSQL_ROOT_PASSWORD} dot < backups/dot_develop.sql + log "exec dot_develop.sql backup" "info" +} + +purgeDb() { + docker compose exec db mysql -uroot -p${MYSQL_ROOT_PASSWORD} -e "drop database dot" + log "dropped database dot" "info" + docker compose exec db mysql -uroot -p${MYSQL_ROOT_PASSWORD} -e "create database dot" + log "created database dot" "info" +} + +composer() { + docker compose exec php php -d memory_limit=-1 /usr/local/bin/composer ${@:1} +} + +case "$1" in + "help") + help;; + "init") + init;; + "up") + up;; + "down") + down;; + "composer"*) + composer ${@:2};; + "psalm"*) + composer analyse;; + "php-fixer") + composer cs;; + "deptrac") + composer deptrac;; + "tests") + composer tests;; + "console"*) + docker compose exec php ./bin/console ${@:2};; + "db") + docker compose exec db mysql -uroot -p${MYSQL_ROOT_PASSWORD};; + "db-create") + createDatabase $2;; + "backup-dev"*) + createBackupWithExceptions $2;; + "backup-create"*) + createBackup $2 $3;; + "backup-exec"*) + execBackup $2 $3;; + "restore-dev"*) + execDevBackup;; + "purge-db"*) + purgeDb;; + "restore-db") + restoredb;; + "front"*) + case $2 in + *) + docker compose exec nuxt ${@:2};; + esac;; + *) + help + #docker compose exec php ./bin/console ${@:1};; +esac diff --git a/configs/nginx/conf.d/default.conf b/configs/nginx/conf.d/default.conf index 88ea0fc..c5b15ea 100644 --- a/configs/nginx/conf.d/default.conf +++ b/configs/nginx/conf.d/default.conf @@ -1,5 +1,5 @@ server { - server_name testa.dot-dot.ru; + server_name teste.dot-dot.ru; root /application/public; @@ -34,9 +34,9 @@ server { try_files $uri @rewriteapp; } - location /help { - alias /application/help-platform/src/.vuepress/dist; - } + # location /help { + # alias /application/help-platform/src/.vuepress/dist; + #} location /api { rewrite ^(.*)$ /index.php/$1 last; @@ -66,6 +66,10 @@ server { try_files $uri @rewriteapp; } + location ~* \/admin\/.*(js|jpg|png|css|woff|woff2)$ { + proxy_pass http://static; + } + location /media { try_files $uri @rewriteapp; } @@ -89,7 +93,8 @@ server { return 204; } - add_header 'Access-Control-Allow-Origin' $http_origin; + #add_header 'Access-Control-Allow-Origin' $http_origin; + add_header 'Access-Control-Allow-Origin' *; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Expeditor-Domain,Authorization'; diff --git a/configs/nginx/templates/default b/configs/nginx/templates/default index b53ea96..2237cc4 100644 --- a/configs/nginx/templates/default +++ b/configs/nginx/templates/default @@ -1,5 +1,5 @@ server { - server_name testa.dot-dot.ru; + server_name teste.dot-dot.ru; root /application/public; diff --git a/configs/nuxt/.env b/configs/nuxt/.env index c3809e2..e396887 100644 --- a/configs/nuxt/.env +++ b/configs/nuxt/.env @@ -1,12 +1,13 @@ NUXT_HOST=0.0.0.0 NUXT_PORT=3000 NUXT_ENV_DEVALUE_LOG_LEVEL=silent -WS_PROTOCOL=ws -BASE_URL=http://testa.dot-dot.ru -API_URL=http://testa.dot-dot.ru +WS_PROTOCOL=wss +BASE_URL=teste.dot-dot.ru +API_URL=https://teste.dot-dot.ru/ +DOMAIN=teste.dot-dot.ru -APP_HOST=dot-dot.local -APP_SCHEME=http +APP_HOST=teste.dot-dot.ru +APP_SCHEME=https APP_ENVIRONMENT=development DADATA_API_TOKEN=c9aa5fdc338a746e23ce91ceb6fdb9e635749833 YANDEX_METRIKA_ID=50156956 diff --git a/configs/php/.env b/configs/php/.env index 8d1481e..b5504f9 100644 --- a/configs/php/.env +++ b/configs/php/.env @@ -8,7 +8,7 @@ DATABASE_URL_DOT=mysql://root:root@db:3306/dot?serverVersion=mariadb-10.3.25 DATABASE_URL_DOT_STATISTIC=mysql://root:root@db:3306/dot_statistic?serverVersion=mariadb-10.3.25 DOCUMENT_ROOT=/application -APP_HOST=dot-dot.local +APP_HOST=teste.dot-dot.ru APP_SCHEME=http MAILER_DSN=null://null @@ -40,7 +40,7 @@ DADATA_API_SECRET=secret UNISENDER_API_KEY=secret -VOICIA_API_KEY=secret +VOICIA_API_KEY=7589ed2721e50e299eb3baf2e3100a6b VOICIA_API_URL=https://app.voicia.ru UAT_1C_API_URL=http://1c.nwtlk.ru/UATtest/hs @@ -54,8 +54,10 @@ GOOGLE_MAPS_BASE_URL=https://maps.google.com ML_CALCULATOR_URL=https://calc.dev.dot-dot.ru/v1/calculate -ML_REGULAR_DIRECTION_URL=https://calc.dev.dot-dot.ru/v1/schedule/transport +ML_REGULAR_DIRECTION_URL=https://calc.dev.dot-dot.ru/v2/schedule/transport +ML_REGULAR_DIRECTION_CHAIN_URL=https://calc.dev.dot-dot.ru/v1/schedule/chains ML_REGULAR_DIRECTION_RELEVANCE_CARRIERS_URL=https://calc.dev.dot-dot.ru/v1/schedule/carrier/scoring +ML_REGULAR_DIRECTION_CHAIN_RELEVANCE_CARRIERS_URL=https://calc.dev.dot-dot.ru/v1/schedule/chains/carrier/scoring ML_UNCERTAIN_DIRECTIONS_URL=https://calc.dev.dot-dot.ru/v1/classification/direction/uncertain YANDEX_MAPS_ACCESS_KEY=secret diff --git a/configs/php/.env.local b/configs/php/.env.local index c861d87..189fc9f 100644 --- a/configs/php/.env.local +++ b/configs/php/.env.local @@ -15,7 +15,7 @@ FNS_ACCESS_TOKEN=a5639b93fe4e7c9a3f1dd85537e066d36439c352 GOOGLE_MAPS_ACCESS_KEY=AIzaSyBCPl2LcpRvplzLUNVMVLhA3b7k46lTCTg -NUXT_BASE_URL=testa.dot-dot.ru +NUXT_BASE_URL=teste.dot-dot.ru ATISU_API_TOKEN=a9698671a68441c7b3959e43995d1506 @@ -31,7 +31,8 @@ TELEGRAM_CHAT_ID=-875661421 ###< telegramm ### ###> voicia ### -VOICIA_CALL_ID=1949 +VOICIA_API_KEY=7589ed2721e50e299eb3baf2e3100a6b +VOICIA_CALL_ID=8788 ###< voicia ### ###> ml_calculator ### @@ -44,15 +45,15 @@ COMAGIC_KEY=j769gveux0brdq7wb6insegwtczvz7nsqmuntkqv ###< comagic ### ###> carrier_scoring ### -ML_CARRIER_SCORING=https://ml.dot-dot.ru/v1/classification/carrier/scoring +ML_CARRIER_SCORING=https://ml.dot-dot.ru/v2/classification/carrier/scoring ###< carrier_scoring ### ###> direction_scoring ### -ML_DIRECTION_SCORING_URL=https://ml.dot-dot.ru/v1/classification/direction/confidence +ML_DIRECTION_SCORING_URL=https://ml.dot-dot.ru/v2/classification/direction/confidence ###< direction_scoring ### - + ###> direction_recalculate ### -ML_DIRECTION_RECALCULATE_URL=https://calc.dev.dot-dot.ru/v1/schedule/calculate +ML_DIRECTION_RECALCULATE_URL=https://ml.dot-dot.ru/v2/schedule/calculate ###< direction_recalculate ### ###< Vozovoz ### @@ -111,3 +112,14 @@ PAPA_FINANCE_API_URL=DotDotAPI SOVKOM_API_KEY=AAk6UcV88xCCC26654rM SOVKOM_API_URL=https://testout.sovcomins.ru ###< SOVKOMTEST### + +ML_REGULAR_DIRECTION_URL=https://ml.dot-dot.ru/v2/schedule/transport + +###> YandexTracker ### +YTRACKER_API_TOKEN="y0_AgAEA7qkKFmeAAjF8AAAAADXovQd6htdkt7LTDW_sNHCz7qV9zdVHaQ" +YTRACKER_ORGANISATION_ID=355207 +###< YandexTracker ### + +ML_REGULAR_DIRECTION_RELEVANCE_CARRIERS_URL=https://ml.dot-dot.ru/v1/schedule/carrier/scoring +ML_REGULAR_DIRECTION_CHAIN_URL=https://ml.dot-dot.ru/v1/schedule/chains +ML_REGULAR_DIRECTION_CHAIN_RELEVANCE_CARRIERS_URL=https://ml.dot-dot.ru/v1/schedule/chains/carrier/scoring diff --git a/configs/php/.env__ b/configs/php/.env__ deleted file mode 100644 index 30ca3ed..0000000 --- a/configs/php/.env__ +++ /dev/null @@ -1,127 +0,0 @@ -APP_ENV=dev -APP_SECRET=c35a0abba25a5396d74ec17fca238d9a - -LOCK_DSN=flock -PHP_SOCKET_PORT=8080 - -DATABASE_URL_DOT=mysql://root:root@db:3306/dot?serverVersion=mariadb-10.3.25 -DATABASE_URL_DOT_STATISTIC=mysql://root:root@db:3306/dot_statistic?serverVersion=mariadb-10.3.25 - -NUXT_BASE_URL=testa.dot-dot.ru -DOCUMENT_ROOT=/application -APP_HOST=dot-dot.local -APP_SCHEME=http - -MAILER_DSN=null://null - -WKHTMLTOPDF_PATH="xvfb-run /usr/bin/wkhtmltopdf --enable-local-file-access" - -SP_WSDL=http://91.208.205.54:84/orawsv/XMLWEB/ -SP_LOGIN=xmlweb -SP_PASSWORD=xmlweb -SP_KEY=secret -SP_TEST=true - -DEFAULT_EMAIL=no_reply@dot-dot.ru -ADMIN_EMAIL=change.this@dot-dot.ru -ACCOUNTANT_EMAIL=noreplay@dot-dot.ru -SALES_EMAIL=sale.ftl@dot-dot.ru -LOGIST_EMAIL=nd@dot-dot.ru -LEAD_EMAIL=change.this@dot-dot.ru -VOSTOK_EMAIL=vostok@dot-dot.ru - -SMSC_LOGIN=secret -SMSC_PASS=secret - -DADATA_API_TOKEN=secret -DADATA_API_SECRET=secret - -UNISENDER_API_KEY=secret - -VOICIA_API_KEY=secret -VOICIA_API_URL=https://app.voicia.ru - -UAT_1C_API_URL=http://1c.nwtlk.ru/UATtest/hs -UAT_1C_USER=secret -UAT_1C_PASSWORD=secret - -FNS_ACCESS_TOKEN=secret - -GOOGLE_MAPS_ACCESS_KEY=secret -GOOGLE_MAPS_BASE_URL=https://maps.google.com - -ML_CALCULATOR_URL=https://calc.dev.dot-dot.ru/v1/calculate - -ML_REGULAR_DIRECTION_URL=https://calc.dev.dot-dot.ru/v1/schedule/transport -ML_REGULAR_DIRECTION_RELEVANCE_CARRIERS_URL=https://calc.dev.dot-dot.ru/v1/schedule/carrier/scoring - -YANDEX_MAPS_ACCESS_KEY=secret -YANDEX_MAPS_BASE_URL=https://api.routing.yandex.net - -GRAFANA_ADMIN_PASSWORD=admin -GRAFANA_API_URL=http://grafana:3000 -GRAFANA_PUBLIC_URL=http://grafana.dot-dot.local - -THREESELLER_USERNAME=savrickijj@rambler.ru -THREESELLER_PASSWORD=123123 - -ATISU_CLIENT_ID=f26841019e0243418395d44ed7430f2a -ATISU_APIKEY=cf6e8c5975f04047a4e39004e2ce07f3 - -###> google/apiclient ### -ANALITIC_GOOGLE_CLIENT_ID=secret -ANALITIC_GOOGLE_CLIENT_SECRET=secret -ANALITIC_GOOGLE_CLIENT_REDIRECT_URI=http://localhost/admin/analitic/google-callback -###< google/apiclient ### - -###> telegramm ### -TELEGRAM_URL=https://api.telegram.org/ -TELEGRAM_BOT_TOKEN=secret -TELEGRAM_CHAT_ID=secret -###< telegramm ### - -DEFAULT_SLUG=dotdot - -###> voicia ### -VOICIA_CALL_ID=secret -###< voicia ### - -###> openssl_encrypt parameters ### -OPENSSL_CIPHER=aes-128-gcm -OPENSSL_PASS_PHRASE=secret -OPENSSL_IV=secret -###> openssl_encrypt parameters ### - -TKKIT_API_TOKEN=secret -TKKIT_API_URL=https://capi.tk-kit.com - -###> BAIKAL### -BAIKAL_API_KEY=secret -###< BAIKAL### - -TELEGRAM_CHAT_BOT_ACCESS_TOKEN=secret - -###> NORDWHEEL### -NORDWHEEL_API_URL=https://nordw.ru -###< NORDWHEEL### - -JDE_API_URL=https://api.jde.ru - -###> SKIF### -SKIF_API_URL=sekret -SKIF_API_LOGIN=sekret -SKIF_API_PASSWORD=sekret -###< SKIF### - -###> DPD ### -DPD_PATH=https://ws.dpd.ru/services/ -DPD_CLIENT_NUMBER=secret -DPD_CLIENT_KEY=secret -###< DPD### - -###> SOVKOM### -SOVKOM_API_KEY=secret -SOVKOM_API_URL=secret -###< SOVKOM### - -MAGIC_API_URL=https://magic-trans.ru/ \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index f90dcb5..aab34de 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,6 +5,7 @@ volumes: nginx_log_volume: mysql_data_volume: mysql_backup_volume: + php_var_volume: networks: @@ -20,8 +21,10 @@ services: environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_USER: ${MYSQL_USER} - MYSQL_DAABASE: ${MYSQL_DATABASE} + MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_PASSWORD: ${MYSQL_PASSWORD} + ports: + - ${MYSQL_PORT}:3306 volumes: - mysql_data_volume:/var/lib/mysql - mysql_backup_volume:/backups @@ -35,6 +38,7 @@ services: volumes: - ./configs/php/.env:/application/.env - ./configs/php/.env.local:/application/.env.local + - php_var_volume:/application/var depends_on: - db networks: @@ -52,6 +56,8 @@ services: command: npm run start volumes: - ./configs/nuxt/.env:/app/.env + env_file: + - ./configs/nuxt/.env networks: - dd @@ -68,8 +74,8 @@ services: - nginx_log_volume:/var/log/nginx labels: - "traefik.enable=true" - - "traefik.http.routers.nginx.rule=Host(`testa.dot-dot.ru`)" - - "traefik.http.services.nginx.loadbalancer.server.port=80" + - "traefik.http.routers.nginx${NETWORK}.rule=Host(`${NETWORK}.dot-dot.ru`)" + - "traefik.http.services.nginx${NETWORK}.loadbalancer.server.port=80" depends_on: - nuxt - php