#version: "3.9" networks: dockernet: external: true name: dockernet # dockernet_stun: # external: true # name: dockernet_stun services: pihole: # user: 1000:1000 container_name: pihole # dns_opt: # - ndots:15 deploy: resources: limits: memory: 512M hostname: dns-dcr.lua.net build: context: ./docker-pi-hole/src # image: pihole/pihole:nightly networks: dockernet: ipv4_address: 10.15.0.200 ipv6_address: 2001:db8:15::200 environment: TZ: 'America/Araguaina' FTLCONF_webserver_api_password: '34641747' FTLCONF_dns_upstreams: '8.8.8.8;8.8.4.4;1.1.1.1;189.38.95.95;208.67.220.220' FTLCONF_webserver_port: '80' VIRTUAL_HOST: 'dns-cloud.doninet.net' FTLCONF_dns_dnssec: 'true' volumes: - './docker/pi-hole/etc-pihole/:/etc/pihole/' - './docker/pi-hole/etc-dnsmasq.d/:/etc/dnsmasq.d/' - '/var/run/docker.sock:/tmp/docker.sock:ro' dns: - 8.8.8.8 - 8.8.4.4 - 208.67.222.222 - 1.1.1.1 restart: unless-stopped cap_add: - NET_ADMIN sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.ipv4.tcp_tw_reuse=1 - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_slow_start_after_idle=0 - net.ipv4.tcp_no_metrics_save=1 zabbix-server: #user: 1000:1000 image: zabbix/zabbix-server-mysql:alpine-latest container_name: zabbix-server restart: always volumes: - /etc/localtime:/etc/localtime:ro - ./docker/zabbix:/etc/zabbix environment: - DB_SERVER_HOST=10.15.0.42 - MYSQL_USER=root - MYSQL_PASSWORD=34641747 networks: dockernet: ipv4_address: 10.15.0.66 ipv6_address: 2001:db8:15::66 deploy: resources: limits: memory: 512M sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.ipv4.tcp_tw_reuse=1 - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_slow_start_after_idle=0 - net.ipv4.tcp_no_metrics_save=1 # docker-compose para frontend do zabbix server 4.0 (mysql) em php, utilizando como base nginx. Da mesma forma, utiliza macvlan para se conectar à rede. zabbix-web-nginx-mysql: #user: 1000:1000 image: zabbix/zabbix-web-nginx-mysql:alpine-latest restart: always container_name: zabbix-web volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro environment: - DB_SERVER_HOST=10.15.0.42 - MYSQL_USER=root - MYSQL_PASSWORD=34641747 - VIRTUAL_HOST=zabbix.doninet.net - VIRTUAL_PORT=8080 - ZBX_SERVER_HOST=10.15.0.66 - PHP_TZ=America/Araguaina networks: dockernet: ipv4_address: 10.15.0.215 ipv6_address: 2001:db8:15::215 deploy: resources: limits: memory: 512M sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.ipv4.tcp_tw_reuse=1 - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_slow_start_after_idle=0 - net.ipv4.tcp_no_metrics_save=1 mariadb: #user: 1000:1000 deploy: resources: limits: cpus: '1' memory: 3G reservations: cpus: '0.5' memory: 1G image: mariadb:latest container_name: mariadb restart: 'always' networks: dockernet: ipv4_address: 10.15.0.42 ipv6_address: 2001:db8:15::42 environment: MYSQL_ROOT_PASSWORD: 34641747 # command: ['--innodb_read_only_compressed=OFF --innodb_buffer_pool_size=1G --innodb_log_file_size=256M --max_connections=500 --query_cache_size=128M'] command: [ '--innodb_read_only_compressed=OFF', '--innodb_buffer_pool_size=2G', '--innodb_log_file_size=256M', '--max_connections=500', '--query_cache_size=128M', '--innodb_flush_log_at_trx_commit=2', '--innodb_flush_method=O_DIRECT', '--innodb_io_capacity=1000', '--innodb_io_capacity_max=2000' ] volumes: - /etc/localtime:/etc/localtime:ro - ./docker/database:/var/lib/mysql - ./docker/mariadb/mariadb.conf.d/:/etc/mysql/mariadb.conf.d sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.core.somaxconn=2048 - net.ipv4.tcp_tw_reuse=1 - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_max_syn_backlog=65536 advx: container_name: advx build: ./advx networks: dockernet: ipv4_address: 10.15.0.124 environment: - DATABASE_URL=postgresql://advx:102030Rod@postgres:5432/advx - PUPPETEER_PRODUCT=firefox - DATABASE_HOST=postgres - DATABASE_PORT=5432 - DATABASE_USER=advx - LETSENCRYPT_HOST=advx.martinsevieira.adv.br - FRONTEND_URL=https://advx.martinsevieira.adv.br - PUBLIC_URL=https://advx.martinsevieira.adv.br/public - BACKEND_URL=https://advx.martinsevieira.adv.br/api - CORS_ORIGIN=https://advx.martinsevieira.adv.br - DATABASE_PASSWORD=102030Rod - JWT_SECRET=c05fb5a5ca9c920fc1eb25f264f376c0c45f1eabe081b499e0a5802f605c876b3a971eb33fa04f0032ecfd3d5f118f49309bda919d196ef7382d36c1759cdaccb352744432ae997bf8237f946efaa668a8337e0d4a9945c4b642ab3f40a3173294ec6a8a81d5b456dfe0c1b2f7732d20ac62b5d68be271cdea80fc630ee6f804217312e1265462fff6fd053bdc07317387c9cb50f052a183e0da72e67cfa0ac8e63a3b7a5441efcbbaa982c9db020d56becde8a0c24b15187c49f1639f88b106fb2ed23a38b538aaf6c7e0f6069bf7a3b837e81541867caa9c2fef9c828a58a2f92e91de0a3f522f8059f1c2c2834686ff2a17c003a1406d3ae1ff0ef6be404c - REDIS_HOST=redis - REDIS_PORT=6379 - VITE_NEXTCLOUD_URL=https://cloud.martinsevieira.adv.br/remote.php/dav/files/rodrigo/CLIENTES - VITE_NEXTCLOUD_USER=rodrigo - VITE_NEXTCLOUD_PASS=34641747 - VITE_TINYMCE_API_KEY=z89f562l976zmlvh8e1ybq89lvosje16hclpx56kor9kajit - VITE_DATAJUD_API_KEY=cDZHYzlZa0JadVREZDJCendQbXY6SkJlTzNjLV9TRENyQk1RdnFKZGRQdw== - DATAJUD_API_KEY=cDZHYzlZa0JadVREZDJCendQbXY6SkJlTzNjLV9TRENyQk1RdnFKZGRQdw== - VITE_API_URL=https://advx.martinsevieira.adv.br/api depends_on: - postgres - redis volumes: - ./adv/storage:/usr/src/app/storage - ./adv/uploads:/usr/src/app/public/uploads - ./adv/public/uploads:/usr/src/app/public/uploads - ./adv/logs:/usr/src/app/logs sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.ipv4.tcp_tw_reuse=1 - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_slow_start_after_idle=0 - net.ipv4.tcp_no_metrics_save=1 gitea: image: gitea/gitea:latest container_name: gitea environment: - USER_UID=1000 - USER_GID=1000 - GITEA_HOSTNAME=git.doninet.net - GITEA_WEB_PORT=80 - GITEA_SSH_PORT=22 - GITEA_database_DB_TYPE=mysql - GITEA__database__HOST=10.15.0.42:3306 - GITEA__database__NAME=gitea - GITEA__database__USER=root - GITEA__database__PASSWD=34641747 - MYSQL_DATABASE=gitea - MYSQL_PASSWORD=34641747 - MYSQL_USER=root - MYSQL_HOST=10.15.0.42 - MYSQL_ROOT_PASSWORD=34641747 volumes: - ./docker/gitea:/data restart: unless-stopped networks: dockernet: ipv4_address: 10.15.0.12 ipv6_address: 2001:db8:15::12 deploy: resources: limits: memory: 512M sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.ipv4.tcp_tw_reuse=1 - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_slow_start_after_idle=0 - net.ipv4.tcp_no_metrics_save=1 nginx: build: ./docker-nginx-http3-quictls # image: nginxproxy/nginx-proxy container_name: nginx deploy: resources: limits: cpus: '4' memory: 2G reservations: cpus: '0.5' memory: 1G restart: 'always' user: root #user: 1000:1000 # expose: # - 80 # - 443 # - 22 # ports: # - "80:80" # - "443:443" # - "22:22" environment: TZ: "America/Araguaina" LETSENCRYPT_HOST: "www.giganetto.com.br, brasilianetto.com.br" networks: dockernet: ipv4_address: 10.15.0.45 ipv6_address: 2001:db8:15::45 volumes: - /etc/localtime:/etc/localtime:ro # - ./docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf # - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro - ./docker/nginx/nextcloud:/var/www/nextcloud - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro - ./docker/nginx/sites:/etc/nginx/conf.d # - ./docker/nginx/logs:/var/log/nginx - ./docker/nginx/html:/usr/share/nginx/html - ./docker/nginx/certs:/etc/nginx/certs:ro - ./docker/nginx/dhparam:/etc/nginx/dhparam # - ./docker/nginx/vhost.d:/etc/nginx/vhost.d - ./docker/nginx/web:/web - ./docker/nginx/bio:/bio - ./docker/nginx/giganet:/giganet - ./docker/nginx/brasilianet:/brasilianet - /var/run/docker.sock:/tmp/docker.sock:ro - /var/run/docker.sock:/var/run/docker.sock:ro # - /var/log/nginx:/var/log/nginx sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.core.somaxconn=2048 - net.ipv4.tcp_tw_reuse=1 - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_max_syn_backlog=65536 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_slow_start_after_idle=0 - net.ipv4.tcp_no_metrics_save=1 ulimits: nproc: 65535 nofile: soft: 65535 hard: 65535 cap_add: # https://man7.org/linux/man-pages/man7/capabilities.7.html # SYS_ADMIN removido junto com "privileged: true" — praticamente # equivale a root no host. BPF+NET_ADMIN+PERFMON já cobrem o que o # sockmap eBPF do nginx (sockhash pinado nos PIDs do nginx) precisa. # Se algo quebrar (ex: carregar/anexar o programa de dentro do # container), o passo mais provável que falta é BPF_TOKEN via # bpffs montado, não SYS_ADMIN de volta. - BPF - NET_ADMIN - PERFMON acme-companion: #user: 1000:1000 image: nginxproxy/acme-companion container_name: acme-companion restart: always depends_on: - nginx volumes: - ./docker/nginx/vhost.d:/etc/nginx/vhost.d - ./docker/nginx/html:/usr/share/nginx/html - ./docker/nginx/dhparam:/etc/nginx/dhparam - ./docker/nginx/certs:/etc/nginx/certs - ./docker/acme:/etc/acme.sh - /var/run/docker.sock:/var/run/docker.sock:ro environment: - NGINX_PROXY_CONTAINER=nginx-gen networks: dockernet: ipv4_address: 10.15.0.74 ipv6_address: 2001:db8:15::74 postgres: #user: 1000:1000 container_name: postgres build: ./psql # image: postgres:16-alpine volumes: - ./docker/postgresql:/var/lib/postgresql/data environment: - LETSENCRYPT_HOST=bio.martinsevieira.adv.br - POSTGRES_USER=${POSTGRES_USER:-ticketz} - POSTGRES_DB=${POSTGRES_DB:-ticketz} - POSTGRES_HOST_AUTH_METHOD=trust - TZ=${TZ:-America/Araguaina} expose: - 5432 restart: always networks: dockernet: ipv4_address: 10.15.0.54 ipv6_address: 2001:db8:15::54 command: >- postgres -c shared_buffers=1GB -c effective_cache_size=3GB -c maintenance_work_mem=256MB -c work_mem=16MB -c max_parallel_workers_per_gather=2 sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.core.somaxconn=65535 - net.ipv4.tcp_tw_reuse=1 # - net.ipv6.conf.all.disable_ipv6=1 # - net.ipv6.conf.all.forwarding=0 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_slow_start_after_idle=0 - net.ipv4.tcp_no_metrics_save=1 deploy: resources: limits: cpus: '1' memory: 3G reservations: cpus: '0.5' memory: 1G redis: #user: 1000:1000 image: redis:7-alpine # command: redis-server --appendonly yes container_name: redis command: > redis-server --appendonly yes --maxmemory 1gb --maxmemory-policy allkeys-lru --save 900 1 --save 300 10 --save 60 10000 expose: - 6379 restart: always volumes: - ./docker/redis:/data networks: dockernet: ipv4_address: 10.15.0.55 ipv6_address: 2001:db8:15::55 sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.ipv4.tcp_tw_reuse=1 - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_max_syn_backlog=65536 # - net.ipv6.conf.all.disable_ipv6=1 # - net.ipv6.conf.all.forwarding=0 - net.ipv4.tcp_slow_start_after_idle=0 - net.ipv4.tcp_no_metrics_save=1 ulimits: nproc: 65535 nofile: soft: 65535 hard: 65535 nextcloud: container_name: nextcloud build: ./nextcloud-docker/app #user: 1000:1000 dns: - 10.15.0.200 - 8.8.8.8 - 1.1.1.1 depends_on: - mariadb - redis environment: # database - MYSQL_DATABASE=nextcloud - MYSQL_HOST=10.15.0.42 - MYSQL_USER=nextcloud - MYSQL_PASSWORD=@102030Rod # redis - REDIS_HOST=10.15.0.55 - LETSENCRYPT_HOST=cloud.martinsevieira.adv.br - LETSENCRYPT_EMAIL=rodrigo@martinsevieira.adv.br healthcheck: test: ["CMD-SHELL", "php -r 'exit(0);'"] interval: 60s timeout: 10s retries: 3 start_period: 120s restart: always volumes: - ./docker/nginx/nextcloud:/var/www/html # - ./nextcloud/php:/usr/local/etc/php - ./nextcloud/scripts:/script - ./docker/resolv.conf:/etc/resolv.conf:ro - ./docker/hosts:/etc/hosts:ro networks: dockernet: ipv4_address: 10.15.0.177 sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.ipv4.tcp_tw_reuse=1 - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_max_syn_backlog=65536 - net.ipv4.tcp_slow_start_after_idle=0 - net.ipv4.tcp_no_metrics_save=1 ulimits: nproc: 65535 nofile: soft: 65535 hard: 65535 deploy: resources: limits: memory: 8G cron: #user: 1000:1000 container_name: nextcloud-cron build: ./nextcloud-docker/app/cron depends_on: - mariadb - redis entrypoint: /cron.sh restart: always volumes: - ./docker/nginx/nextcloud:/var/www/html networks: dockernet: ipv4_address: 10.15.0.178 deploy: resources: limits: memory: 256M notify-push: container_name: nextcloud-notify-push build: ./nextcloud-docker/app entrypoint: sh -c "until [ -f /var/www/html/custom_apps/notify_push/bin/aarch64/notify_push ]; do sleep 5; done && chmod +x /var/www/html/custom_apps/notify_push/bin/aarch64/notify_push && /var/www/html/custom_apps/notify_push/bin/aarch64/notify_push /var/www/html/config/config.php" depends_on: - nextcloud - mariadb - redis environment: - PORT=7867 - NEXTCLOUD_URL=https://cloud.martinsevieira.adv.br restart: always volumes: - ./docker/nginx/nextcloud:/var/www/html - ./docker/resolv.conf:/etc/resolv.conf:ro - ./docker/hosts:/etc/hosts:ro networks: dockernet: ipv4_address: 10.15.0.179 deploy: resources: limits: memory: 128M onlyoffice: build: context: ./office restart: unless-stopped container_name: onlyoffice depends_on: - postgres - onlyoffice-rabbitmq - nextcloud - nginx environment: - DB_TYPE=postgres - DB_HOST=postgres - DB_PORT=5432 - DB_NAME=onlyoffice - DB_USER=onlyoffice - AMQP_URI=amqp://rabbitmq:rabbitmq@10.15.0.212/?frameMax=0 # Uncomment strings below to enable the JSON Web Token validation. - JWT_ENABLED=true - JWT_HEADER=Authorization - JWT_IN_BODY=true - JWT_SECRET=@203050Rod - LETSENCRYPT_HOST=office.martinsevieira.adv.br stdin_open: true stop_grace_period: 60s networks: dockernet: ipv4_address: 10.15.0.211 volumes: - ./docker/onlyoffice/data:/var/www/onlyoffice/Data - ./docker/onlyoffice/log:/var/log/onlyoffice sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.core.somaxconn=2048 - net.ipv4.tcp_tw_reuse=1 - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_max_syn_backlog=65536 ulimits: nproc: 65535 nofile: soft: 65535 hard: 65535 deploy: resources: limits: memory: 768M onlyoffice-rabbitmq: container_name: rabbitmq image: rabbitmq environment: RABBITMQ_DEFAULT_USER: "rabbitmq" RABBITMQ_DEFAULT_PASS: "rabbitmq" RABBITMQ_DEFAULT_VHOST: "/" restart: always networks: dockernet: ipv4_address: 10.15.0.212 sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.core.somaxconn=2048 - net.ipv4.tcp_tw_reuse=1 - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_max_syn_backlog=65536 ulimits: nproc: 65535 nofile: soft: 65535 hard: 65535 deploy: resources: limits: memory: 768M # openproject: # image: openproject/openproject:14 # container_name: openproject # depends_on: # - nginx # - nextcloud # dns: # - 8.8.8.8 # - 8.8.4.4 # environment: # EMAIL_DELIVERY_METHOD: smtp # SMTP_ADDRESS: smtps.uhserver.com # SMTP_PORT: 465 # SMTP_DOMAIN: "martinsevieira.adv.br" # SMTP_AUTHENTICATION: login ## SMTP_ENABLE_STARTTLS_AUTO: "true" # SMTP_USER_NAME: "escritorio@martinsevieira.adv.br" # SMTP_PASSWORD: "102030Rod" # OPENPROJECT_HTTPS: true # OPENPROJECT_DEFAULT__LANGUAGE: pt-BR # OPENPROJECT_SECRET_KEY_BASE: "@102030Rod" # LETSENCRYPT_HOST: "projeto.martinsevieira.adv.br" # LETSENCRYPT_EMAIL: "escritorio@martinsevieira.adv.br" # USE_PUMA: true # RAILS_MIN_THREADS: 2 # RAILS_MAX_THREADS: 4 # IMAP_SSL: true # IMAP_SSL_VERIFICATION: true # IMAP_PORT: 993 # IMAP_HOST: imap.uhserver.com # IMAP_USERNAME: "escritorio@martinsevieira.adv.br" # IMAP_PASSWORD: "@102030Rod" # networks: # dockernet: # ipv4_address: 10.15.0.218 # ipv6_address: 2001:db8:15::218 # ulimits: # nproc: 65535 # nofile: # soft: 65535 # hard: 65535 # volumes: # - ./docker/openproject/pgdata:/var/openproject/pgdata # - ./docker/openproject/logs:/var/log/supervisor # - ./docker/openproject/static:/var/openproject/assets # - ./docker/openproject/enterprise_token.rb:/app/app/models/enterprise_token.rb:ro # deploy: # resources: # limits: # memory: 1G kms: build: ./kms environment: TZ: America/Araguaina networks: dockernet: ipv4_address: 10.15.0.246 ipv6_address: 2001:db8:15::246 deploy: resources: limits: cpus: '0.5' memory: 256m restart: unless-stopped sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_max_syn_backlog=65536 nginx-gen: image: nginxproxy/nginx-proxy container_name: nginx-gen restart: 'always' #user: 1000:1000 environment: TZ: "America/Araguaina" # LETSENCRYPT_HOST: "pit.martinsevieira.adv.br" networks: dockernet: ipv4_address: 10.15.0.48 ipv6_address: 2001:db8:15::48 volumes: - /etc/localtime:/etc/localtime:ro - ./docker/nginx/certs:/etc/nginx/certs:ro - /var/run/docker.sock:/tmp/docker.sock:ro - /var/run/docker.sock:/var/run/docker.sock:ro sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.ipv4.tcp_tw_reuse=1 - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_slow_start_after_idle=0 - net.ipv4.tcp_no_metrics_save=1 telegram-bot: build: ./rodrigonet container_name: bot-ajuda-telegram restart: unless-stopped environment: # Token do Bot do Telegram - TELEGRAM_BOT_TOKEN=7673419014:AAGK7HNBYMMWl-bTNc5VBAl4FDLutMBx7pc # Configurações do bot - BOT_DEBUG=true - NODE_ENV=production # Usuários autorizados - ALLOWED_USERS=593272271 - GUARAI_ALLOWED_USERS=1676175142,7222689324,5807598773,8360691637,8667337941,5244062341,8668809965 - PEDRO_AFONSO_ALLOWED_USERS=8105351046,8413938070 # Volumes para logs persistentes - TOPSAPP_GUARAI_HOST=131.0.192.6 - TOPSAPP_GUARAI_USER=rodrigo - TOPSAPP_GUARAI_PASS=2014Melancia - TOPSAPP_PEDRO_AFONSO_HOST=45.189.140.18 - TOPSAPP_PEDRO_AFONSO_USER=rodrigo - TOPSAPP_PEDRO_AFONSO_PASS=34641747 - JUNIPER_PEDRO_AFONSO_HOST=45.189.140.2 - JUNIPER_PEDRO_AFONSO_USER=rodrigo - JUNIPER_PEDRO_AFONSO_PASS=2311@Goiania#2017 - JUNIPER_GUARAI_HOST=131.0.192.254 - JUNIPER_GUARAI_USER=rodrigo - JUNIPER_GUARAI_PASS=@102030Rod - TZ=America/Araguaina - GENIEACS_GUARAI_URL=http://g.clicknetto.com.br - GENIEACS_GUARAI_NBI_PORT=7557 - GENIEACS_GUARAI_USER=api - GENIEACS_GUARAI_PASS=34641747 volumes: - ./logs:/app/logs # Health check healthcheck: test: ["CMD", "node", "-e", "console.log('Bot is running')"] interval: 30s timeout: 10s retries: 3 start_period: 40s # Limites de recursos deploy: resources: limits: memory: 512M cpus: '0.5' reservations: memory: 256M cpus: '0.25' # Logs logging: driver: "json-file" options: max-size: "10m" max-file: "3" networks: dockernet: ipv4_address: 10.15.0.119 grafana: #user: 1000:1000 image: grafana/grafana container_name: grafana environment: - TZ=America/Araguaina - VIRTUAL_HOST=grafana.doninet.net - VIRTUAL_PORT=3000 volumes: - ./docker/grafana:/var/lib/grafana networks: dockernet: ipv4_address: 10.15.0.110 ipv6_address: 2001:db8:15::110 restart: unless-stopped frontend: #user: 1000:1000 container_name: frontend build: context: ./ticketz/frontend dockerfile: ./Dockerfile env_file: - .env-frontend-acme environment: - TZ=America/Araguaina - LETSENCRYPT_HOST=chat.martinsevieira.adv.br restart: unless-stopped depends_on: - acme-companion - backend networks: dockernet: ipv4_address: 10.15.0.96 # ipv6_address: 2001:db8:15::96 deploy: resources: limits: memory: 512M sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.ipv4.tcp_tw_reuse=1 - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_slow_start_after_idle=0 - net.ipv4.tcp_no_metrics_save=1 backend: #user: 1000:1000 container_name: backend build: context: ./ticketz/backend dockerfile: ./Dockerfile deploy: resources: limits: memory: 512M volumes: - ./docker/backend_public:/usr/src/app/public env_file: - .env-backend-acme environment: - TZ=America/Araguaina - LETSENCRYPT_HOST=api.chat.martinsevieira.adv.br restart: unless-stopped depends_on: - acme-companion - postgres - redis networks: dockernet: ipv4_address: 10.15.0.70 # ipv6_address: 2001:db8:15::70 sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.ipv4.tcp_tw_reuse=1 - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_slow_start_after_idle=0 - net.ipv4.tcp_no_metrics_save=1 wordpress: image: wordpress:latest container_name: wordpress volumes: - ./docker/wp-content:/var/www/html/wp-content environment: - LETSENCRYPT_HOST=www.martinsevieira.adv.br,martinsevieira.adv.br - WORDPRESS_DB_NAME=wordpress - WORDPRESS_TABLE_PREFIX=wp_ - WORDPRESS_DB_HOST=10.15.0.42 - WORDPRESS_DB_USER=root - WORDPRESS_DB_PASSWORD=34641747 - WORDPRESS_CONFIG_EXTRA=define('WP_REDIS_HOST', '10.15.0.55'); define('WP_REDIS_PORT', 6379); define('WP_REDIS_DATABASE', 1); define('WP_CACHE_KEY_SALT', 'wp_mv_adv_'); define('DISABLE_WP_CRON', true); depends_on: - mariadb restart: always networks: dockernet: ipv4_address: 10.15.0.84 # ipv6_address: 2001:db8:15::70 sysctls: - net.netfilter.nf_conntrack_acct=1 - net.netfilter.nf_conntrack_checksum=1 - net.netfilter.nf_conntrack_timestamp=1 - net.netfilter.nf_conntrack_tcp_loose=1 - net.netfilter.nf_conntrack_generic_timeout=600 - net.netfilter.nf_conntrack_tcp_timeout_established=86400 - net.netfilter.nf_conntrack_tcp_timeout_close=10 - net.netfilter.nf_conntrack_tcp_timeout_close_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_last_ack=10 - net.netfilter.nf_conntrack_tcp_timeout_time_wait=10 - net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5 - net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5 - net.netfilter.nf_conntrack_udp_timeout=10 - net.netfilter.nf_conntrack_udp_timeout_stream=180 - net.netfilter.nf_conntrack_icmp_timeout=10 - net.netfilter.nf_conntrack_icmpv6_timeout=10 - net.ipv4.tcp_congestion_control=bbr - net.ipv4.tcp_tw_reuse=1 - net.core.somaxconn=65535 - net.ipv4.tcp_fastopen=3 - net.ipv4.tcp_slow_start_after_idle=0 - net.ipv4.tcp_no_metrics_save=1 anatomia-db: container_name: anatomia-db image: postgres:16-alpine restart: unless-stopped environment: TZ: 'America/Araguaina' POSTGRES_USER: ${POSTGRES_USER:-anatomia} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-anatomia} POSTGRES_DB: ${POSTGRES_DB:-anatomia} volumes: - anatomia_db_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-anatomia}"] interval: 5s timeout: 5s retries: 10 networks: - dockernet deploy: resources: limits: memory: 512M anatomia-api: container_name: anatomia-api build: context: ./anatomia/backend restart: unless-stopped depends_on: anatomia-db: condition: service_healthy environment: TZ: 'America/Araguaina' DATABASE_URL: postgresql://${POSTGRES_USER:-anatomia}:${POSTGRES_PASSWORD:-anatomia}@anatomia-db:5432/${POSTGRES_DB:-anatomia} PORT: 3333 MODELS_DIR: /app/models ADMIN_EMAIL: ${ADMIN_EMAIL:-rodrigo@martinsevieira.adv.br} ADMIN_PASSWORD: ${ADMIN_PASSWORD:-34641747} ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET:-43aca599e81c2f164b6c1b2331157217c1beca57fa49e73e55c5cc83252a53e243aca599e81c2f164b6c1b2331157217c1beca57fa49e73e55c5cc83252a53e2} volumes: - anatomia_models_data:/app/models:ro networks: - dockernet deploy: resources: limits: memory: 512M anatomia-web: container_name: anatomia-web build: context: ./anatomia dockerfile: frontend/Dockerfile restart: unless-stopped depends_on: - anatomia-api environment: TZ: 'America/Araguaina' # Lido pelo acme-companion (pareado com nginx-gen) para emitir/renovar # o certificado Let's Encrypt deste domínio. LETSENCRYPT_HOST: ${ANATOMIA_DOMAIN:-atlas.martinsevieira.adv.br} networks: dockernet: # IP fixo para o vhost manual em docker/nginx/sites/*.conf poder # apontar (proxy_pass) direto para este container, no mesmo padrão # já usado para "frontend"/"backend" (ticketz) e "nextcloud". # Confirme que este IP está livre em dockernet antes de subir! ipv4_address: ${ANATOMIA_WEB_IP:-10.15.0.93} deploy: resources: limits: memory: 256M # One-off data pipeline: generates the seed GLB models + populates the DB. # Run explicitly with: docker compose run --rm anatomia-pipeline anatomia-pipeline: container_name: anatomia-pipeline build: context: ./anatomia/data-pipeline profiles: ["tools"] depends_on: anatomia-db: condition: service_healthy anatomia-api: condition: service_started environment: DATABASE_URL: postgresql://${POSTGRES_USER:-anatomia}:${POSTGRES_PASSWORD:-anatomia}@anatomia-db:5432/${POSTGRES_DB:-anatomia} volumes: - anatomia_models_data:/app/seed/models networks: - dockernet volumes: anatomia_db_data: anatomia_models_data: