Initial commit

This commit is contained in:
Sergey Paramoshkin 2024-02-19 14:33:57 +03:00
commit 6826883110
10 changed files with 742 additions and 0 deletions

11
.env Normal file
View File

@ -0,0 +1,11 @@
COMPOSE_PROJECT_NAME=testa
NETWORK=testa
FRONT_TAG=test-nuxt
DOTDOT_TAG=test-nuxt
MYSQL_PORT=0.0.0.0:3306
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=dot
MYSQL_USER=dot
MYSQL_PASSWORD=dot

0
README.md Normal file
View File

View File

@ -0,0 +1,102 @@
server {
server_name testa.dot-dot.ru;
root /application/public;
location / {
proxy_pass http://nuxt:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
}
location /socket.io/auctionreload {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://php:9000;
}
location @rewriteapp {
rewrite ^(.*)$ /index.php/$1 last;
}
# location /storybook {
# alias /application/nuxt/storybook-static;
# }
location /logout {
try_files $uri @rewriteapp;
}
location /help {
alias /application/help-platform/src/.vuepress/dist;
}
location /api {
rewrite ^(.*)$ /index.php/$1 last;
}
location /clockwork {
rewrite ^(.*)$ /index.php/$1 last;
}
location /__clockwork {
rewrite ^(.*)$ /index.php/$1 last;
}
location /pdf {
rewrite ^(.*)$ /index.php/$1 last;
}
location /1c {
rewrite ^(.*)$ /index.php/$1 last;
}
location /socket {
try_files $uri @rewriteapp;
}
location /admin {
try_files $uri @rewriteapp;
}
location /media {
try_files $uri @rewriteapp;
}
location /img {
proxy_pass http://static;
# alias /application/public/img;
# try_files $uri /index.php$request_uri;
# expires 6M;
}
location ~ ^/index\.php(/|$) {
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' $http_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';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
add_header 'Access-Control-Allow-Origin' $http_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';
fastcgi_pass php:9001;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

64
configs/nginx/nginx.conf Normal file
View File

@ -0,0 +1,64 @@
user nginx;
worker_processes 16;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 10240;
use epoll;
multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format upstream_time '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" rt=$request_time uct=$upstream_connect_time uht=$upstream_header_time urt=$upstream_response_time "$http_user_agent"';
log_format json escape=json '{'
'"time":"$time_iso8601",'
'"proxy_protocol_addr":"$proxy_protocol_addr",'
'"remote_addr":"$remote_addr",'
'"x-forward-for":"$proxy_add_x_forwarded_for",'
'"request_id":"$request_id",'
'"request":"$request",'
'"remote_user":"$remote_user",'
'"bytes_sent":"$bytes_sent",'
'"body_bytes_sent":"$body_bytes_sent",'
'"request_time":"$request_time",'
'"status":"$status",'
'"vhost":"$host",'
'"request_proto":"$server_protocol",'
'"path":"$uri",'
'"request_query":"$args",'
'"request_length":"$request_length",'
'"method":"$request_method",'
'"http_referrer":"$http_referer",'
'"http_user_agent":"$http_user_agent",'
'"upstream_addr":"$upstream_addr",'
'"upstream_latency":"$upstream_response_time",'
'"upstream_status":"$upstream_status",'
'"upstream_response_time":"$upstream_response_time",'
'"upstream_connect_time":"$upstream_connect_time",'
'"upstream_header_time":"$upstream_header_time",'
'"upstream_bytes_received":"$upstream_bytes_received",'
'"upstream_bytes_sent":"$upstream_bytes_sent",'
'"tls":"$ssl_protocol/$ssl_cipher"'
'}';
access_log /var/log/nginx/access.log json;
server_tokens off;
charset UTF-8;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_requests 1000;
keepalive_timeout 65;
#gzip on;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
resolver 127.0.0.11 ipv6=off valid=1s;
include /etc/nginx/conf.d/*.conf;
}

View File

@ -0,0 +1,102 @@
server {
server_name testa.dot-dot.ru;
root /application/public;
location / {
proxy_pass http://nuxt:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
}
location /socket.io/auctionreload {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://php:${PHP_SOCKET_PORT}/;
}
location @rewriteapp {
rewrite ^(.*)$ /index.php/$1 last;
}
location /storybook {
alias /application/nuxt/storybook-static;
}
location /logout {
try_files $uri @rewriteapp;
}
location /help {
alias /application/help-platform/src/.vuepress/dist;
}
location /api {
rewrite ^(.*)$ /index.php/$1 last;
}
location /clockwork {
rewrite ^(.*)$ /index.php/$1 last;
}
location /__clockwork {
rewrite ^(.*)$ /index.php/$1 last;
}
location /pdf {
rewrite ^(.*)$ /index.php/$1 last;
}
location /1c {
rewrite ^(.*)$ /index.php/$1 last;
}
location /socket {
try_files $uri @rewriteapp;
}
location /admin {
try_files $uri @rewriteapp;
}
location /media {
try_files $uri @rewriteapp;
}
location /img {
alias /application/public/img;
}
location ~ ^/index\.php(/|$) {
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' $http_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';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
add_header 'Access-Control-Allow-Origin' $http_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';
fastcgi_pass php:9001;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
error_log /var/log/nginx/dot_dot_error.log;
access_log /var/log/nginx/dot_dot_access.log;
}

12
configs/nuxt/.env Normal file
View File

@ -0,0 +1,12 @@
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
APP_HOST=dot-dot.local
APP_SCHEME=http
APP_ENVIRONMENT=development
DADATA_API_TOKEN=c9aa5fdc338a746e23ce91ceb6fdb9e635749833
YANDEX_METRIKA_ID=50156956

132
configs/php/.env Normal file
View File

@ -0,0 +1,132 @@
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
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
SP_V3_URL=https://spasskievorota.ru/services/test/cargo_3.php
SP_V3_KEY=secret
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
ML_UNCERTAIN_DIRECTIONS_URL=https://calc.dev.dot-dot.ru/v1/classification/direction/uncertain
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/
MAGIC_API_URL=https://magic-trans.ru/

113
configs/php/.env.local Normal file
View File

@ -0,0 +1,113 @@
NotificationBuildServicejSP_KEY=16e93b225c730920ac5741a8d8df788f
DADATA_API_TOKEN=c9aa5fdc338a746e23ce91ceb6fdb9e635749833
DADATA_API_SECRET=1ea37a4d310e7a6ac64211ffe5686363f04d4e68
ROISTAT_API_KEY=c63a71dd721df7f1b1d7b5803a84ccc7
ROISTAT_PROJECT_ID=166751
UNISENDER_API_KEY=6ugo1c6yqfux9wrs8pbaom3izz9pc9huetqbdo9y
GTD_ACCESS_TOKEN=cznMwszlx-5X_F7uQbg-uaPFhqmBP28z
FNS_ACCESS_TOKEN=a5639b93fe4e7c9a3f1dd85537e066d36439c352
GOOGLE_MAPS_ACCESS_KEY=AIzaSyBCPl2LcpRvplzLUNVMVLhA3b7k46lTCTg
NUXT_BASE_URL=testa.dot-dot.ru
ATISU_API_TOKEN=a9698671a68441c7b3959e43995d1506
###> google/apiclient ###
ANALITIC_GOOGLE_CLIENT_ID=672035500859-n6cq8lb393rs5f7q46pnjrc6u9hjiomg.apps.googleusercontent.com
ANALITIC_GOOGLE_CLIENT_SECRET=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
ANALITIC_GOOGLE_CLIENT_REDIRECT_URI=http://dot-dot.local/admin/analitic/google-callback
###< google/apiclient ###
###> telegramm ###
TELEGRAM_BOT_TOKEN=5807192360:AAHSUZcWeY1bC7aqdmcYXOfb1CYyK0xx0Cc
TELEGRAM_CHAT_ID=-875661421
###< telegramm ###
###> voicia ###
VOICIA_CALL_ID=1949
###< voicia ###
###> ml_calculator ###
ML_CALCULATOR_URL=https://ml.dot-dot.ru/v1/classification/order/relevance
###< ml_calculator ###
###> comagic ###
COMAGIC_URL=https://dataapi.comagic.ru/v2.0
COMAGIC_KEY=j769gveux0brdq7wb6insegwtczvz7nsqmuntkqv
###< comagic ###
###> carrier_scoring ###
ML_CARRIER_SCORING=https://ml.dot-dot.ru/v1/classification/carrier/scoring
###< carrier_scoring ###
###> direction_scoring ###
ML_DIRECTION_SCORING_URL=https://ml.dot-dot.ru/v1/classification/direction/confidence
###< direction_scoring ###
###> direction_recalculate ###
ML_DIRECTION_RECALCULATE_URL=https://calc.dev.dot-dot.ru/v1/schedule/calculate
###< direction_recalculate ###
###< Vozovoz ###
VOZOVOZ_API_KEY=5Thue256i0n5jXpB8vQfzng0VNJKGDar7ol5x0iD
VOZOVOZ_API_URL=https://vozovoz.ru/
###> Vozovoz ###
###< Pek ###
PECOM_API_LOGIN=TochkaTochka
PECOM_API_PASSWORD=EB77132653DD37BCD4EF591968F504CFB04BDFC4
PECOM_API_URL=https://kabinet.pecom.ru/
###> Pek ###
###< TkKit ###
TKKIT_API_TOKEN=FKIICpqz25v10RuFcNorHACFdhEtkQK8
TKKIT_API_URL=https://capi.tk-kit.com/
###> TkKit ###
###> Baikal ###
BAIKAL_API_KEY=NjJiZjdiMjU0N2Y4ZTk5OTY3OTY3OGUxM2VjZjA3N2M6
BAIKAL_API_URL=https://api.baikalsr.ru/v2
BAIKAL_API_PARTNER_GUID=PROVERKA
###< Baikal ###
###> DelovieLinii ###
DELLIN_API_KEY=BE38996C-F722-4691-BCF3-640B76DAB18B
DELLIN_API_URL=https://api.dellin.ru/
DELLIN_PASSWORD=Logistika01
DELLIN_LOGIN=km@dot-dot.ru
###< DelovieLinii ###
###> JelDorEksp ###
JDE_API_USER=2252131242955194
JDE_API_TOKEN=159687460352596660
###< JelDorEksp ###
###> Nordweel ###
NORDWHEEL_API_URL=https://nordw.ru/
###< Nordweel ###
###> SKIF ###
SKIF_API_URL=http://api.skif-cargo.ru/integrations/ws/orders.1cws
SKIF_API_LOGIN=DotDotAPI
SKIF_API_PASSWORD=H*GYU#7g8YG*#!
###< SKIF ###
###> DPD ###
DPD_CLIENT_NUMBER=1001066989
DPD_CLIENT_KEY=8D52BF0F4D272FA91AF7B8EFC64C74EA31B89C4D
###< DPD ###
PAPA_FINANCE_LOGIN=DotDotAPI
PAPA_FINANCE_PASSWORD=DotDotAPI
PAPA_FINANCE_API_URL=DotDotAPI
###> SOVKOMTEST###
SOVKOM_API_KEY=AAk6UcV88xCCC26654rM
SOVKOM_API_URL=https://testout.sovcomins.ru
###< SOVKOMTEST###

127
configs/php/.env__ Normal file
View File

@ -0,0 +1,127 @@
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/

79
docker-compose.yml Normal file
View File

@ -0,0 +1,79 @@
version: "3.3"
volumes:
certbot_volume:
nginx_log_volume:
mysql_data_volume:
mysql_backup_volume:
networks:
dd:
name: ${NETWORK}
ingress:
external: true
services:
db:
image: mariadb:10.3.25
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_USER: ${MYSQL_USER}
MYSQL_DAABASE: ${MYSQL_DATABASE}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- mysql_data_volume:/var/lib/mysql
- mysql_backup_volume:/backups
networks:
- dd
php:
image: registry.dot-dot.ru/dot-dot:${DOTDOT_TAG}
# command: "php-fpm && nginx -g 'daemon off;'"
restart: unless-stopped
volumes:
- ./configs/php/.env:/application/.env
- ./configs/php/.env.local:/application/.env.local
depends_on:
- db
networks:
- dd
static:
image: registry.dot-dot.ru/dot-dot-static:${DOTDOT_TAG}
restart: unless-stopped
networks:
- dd
nuxt:
image: registry.dot-dot.ru/front:${FRONT_TAG}
restart: unless-stopped
command: npm run start
volumes:
- ./configs/nuxt/.env:/app/.env
networks:
- dd
nginx:
image: nginx:1.25.3-alpine3.18
restart: unless-stopped
volumes:
- ./configs/nginx/conf.d:/etc/nginx/conf.d
- ./configs/nginx/nginx.conf:/etc/nginx/nginx.conf
- ./configs/nginx/www:/var/www
- ./configs/nginx/ssl:/etc/nginx/ssl
- ./configs/nginx/other:/etc/nginx/other
- certbot_volume:/etc/letsencrypt
- 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"
depends_on:
- nuxt
- php
- static
networks:
- dd
- ingress