Subida a producción como Acana
This commit is contained in:
parent
2484489858
commit
b770ff970f
130
scripts/docker-compose.acana.yml
Normal file
130
scripts/docker-compose.acana.yml
Normal file
@ -0,0 +1,130 @@
|
||||
services:
|
||||
# --- Base de datos MariaDB ---
|
||||
db:
|
||||
image: mariadb:lts-noble
|
||||
container_name: factuges_acana_db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASS}
|
||||
MARIADB_USER: ${DB_USER}
|
||||
MARIADB_PASSWORD: ${DB_PASS}
|
||||
MARIADB_DATABASE: ${DB_NAME}
|
||||
volumes:
|
||||
- ./volumes/db_data:/var/lib/mysql
|
||||
networks:
|
||||
- internal
|
||||
healthcheck:
|
||||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||||
interval: 20s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
# --- phpMyAdmin (solo accesible por Traefik + whitelist IP) ---
|
||||
phpmyadmin:
|
||||
image: phpmyadmin/phpmyadmin
|
||||
container_name: factuges_acana_phpmyadmin
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
PMA_HOST: db
|
||||
PMA_USER: ${DB_USER}
|
||||
PMA_PASSWORD: ${DB_PASS}
|
||||
PMA_VERBOSES: "FactuGES Acana"
|
||||
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASS}
|
||||
UPLOAD_LIMIT: 64M
|
||||
depends_on:
|
||||
- db
|
||||
networks:
|
||||
- internal
|
||||
- edge
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# /phpmyadmin → phpMyAdmin
|
||||
traefik.http.routers.factuges_acana_phpmyadmin.rule: Host(`${DOMAIN}`) && PathPrefix(`/phpmyadmin`)
|
||||
traefik.http.routers.factuges_acana_phpmyadmin.entrypoints: websecure
|
||||
traefik.http.routers.factuges_acana_phpmyadmin.tls.certresolver: cloudflare-dns
|
||||
traefik.http.routers.factuges_acana_phpmyadmin.priority: "110"
|
||||
traefik.http.routers.factuges_acana_phpmyadmin.service: factuges_acana_phpmyadmin
|
||||
traefik.http.services.factuges_acana_phpmyadmin.loadbalancer.server.port: "80"
|
||||
|
||||
# strip /phpmyadmin del path antes de llegar al contenedor
|
||||
traefik.http.middlewares.factuges_acana_phpmyadmin_strip.stripprefix.prefixes: "/phpmyadmin"
|
||||
|
||||
# whitelist a tu IP
|
||||
traefik.http.middlewares.factuges_acana_phpmyadmin_ipwhitelist.ipwhitelist.sourcerange: "79.116.183.41/32"
|
||||
|
||||
# encadenar middlewares
|
||||
traefik.http.routers.factuges_acana_phpmyadmin.middlewares: "factuges_acana_phpmyadmin_strip,factuges_acana_phpmyadmin_ipwhitelist"
|
||||
|
||||
# --- API Node.js ---
|
||||
api:
|
||||
image: factuges-server:acana-latest #${API_IMAGE}
|
||||
container_name: factuges_acana_api
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
NODE_ENV: production
|
||||
COMPANY: acana
|
||||
PORT: ${API_PORT:-3002}
|
||||
DB_DIALECT: "mysql"
|
||||
DB_HOST: "db"
|
||||
DB_PORT: ${DB_PORT}
|
||||
DB_NAME: ${DB_NAME}
|
||||
DB_USER: ${DB_USER}
|
||||
DB_PASS: ${DB_PASS}
|
||||
FRONTEND_URL: ${FRONTEND_URL}
|
||||
networks:
|
||||
- internal
|
||||
- edge
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# /api → backend
|
||||
traefik.http.routers.factuges_acana_api.rule: Host(`${DOMAIN}`) && PathPrefix(`/api`)
|
||||
traefik.http.routers.factuges_acana_api.entrypoints: websecure
|
||||
traefik.http.routers.factuges_acana_api.tls.certresolver: cloudflare-dns
|
||||
|
||||
traefik.http.routers.factuges_acana_api.priority: "100"
|
||||
traefik.http.routers.factuges_acana_api.service: factuges_acana_api
|
||||
|
||||
# Servicio
|
||||
traefik.http.services.factuges_acana_api.loadbalancer.server.port: "${API_PORT:-3002}"
|
||||
|
||||
# --- Web estática Vite (nginx) ---
|
||||
web:
|
||||
image: nginx:alpine
|
||||
container_name: factuges_acana_web
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- api
|
||||
environment:
|
||||
VITE_API_SERVER_URL: ${DOMAIN}/api
|
||||
volumes:
|
||||
- ./web/public:/usr/share/nginx/html:ro
|
||||
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
|
||||
networks:
|
||||
- edge
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# / → frontend
|
||||
traefik.http.routers.factuges_acana_web.rule: Host(`${DOMAIN}`) && PathPrefix(`/`)
|
||||
traefik.http.routers.factuges_acana_web.entrypoints: websecure
|
||||
traefik.http.routers.factuges_acana_web.tls.certresolver: cloudflare-dns
|
||||
|
||||
# prioridad más baja para que /api y /phpmyadmin ganen
|
||||
traefik.http.routers.factuges_acana_web.priority: "1"
|
||||
traefik.http.routers.factuges_acana_web.service: factuges_acana_web
|
||||
traefik.http.services.factuges_acana_web.loadbalancer.server.port: "80"
|
||||
|
||||
networks:
|
||||
edge:
|
||||
name: edge
|
||||
external: true
|
||||
internal:
|
||||
name: factuges_acana_internal
|
||||
external: false
|
||||
|
||||
|
||||
volumes:
|
||||
# Solo declarativo; usamos ruta ./volumes/db_data arriba
|
||||
db_data:
|
||||
50
scripts/stack.acana.env
Normal file
50
scripts/stack.acana.env
Normal file
@ -0,0 +1,50 @@
|
||||
# Identidad de la compañía
|
||||
COMPANY=acana
|
||||
|
||||
# Dominios
|
||||
DOMAIN=acana.factuges.app
|
||||
|
||||
# MariaDB
|
||||
DB_ROOT_PASS=cQF#qRM*JU+tDyf
|
||||
DB_USER=acana
|
||||
DB_PASS=r@U8%GJ+2e/AWR
|
||||
DB_NAME=factuges_acana
|
||||
DB_PORT=3306
|
||||
|
||||
# API
|
||||
API_PORT=3002
|
||||
API_IMAGE=factuges-server:acana-latest
|
||||
FRONTEND_URL=https://acana.factuges.app
|
||||
|
||||
|
||||
# SYNC
|
||||
ENV = development
|
||||
LOCAL_TZ = Europe/Madrid
|
||||
LAST_RUN_PATH = /usr/share/factuges-app/last_run_factuges.ini
|
||||
|
||||
FACTUGES_HOST = acana.mywire.org
|
||||
FACTUGES_PORT = 63050
|
||||
FACTUGES_DATABASE = D:\Rodax\BD\FACTUGES.FDB
|
||||
FACTUGES_USER = sysdba
|
||||
FACTUGES_PASSWORD = masterkey
|
||||
|
||||
FWEB_MYSQL_HOST = db # ${DB_NAME}
|
||||
FWEB_MYSQL_PORT = 3306 # ${DB_PORT}
|
||||
FWEB_MYSQL_DATABASE = factuges_acana # ${DB_NAME}
|
||||
FWEB_MYSQL_USER = acana # ${DB_USER}
|
||||
FWEB_MYSQL_PASSWORD = r@U8%GJ+2e/AWR # ${DB_PASS}
|
||||
|
||||
CTE_COMPANY_ID = '019a9667-6a65-767a-a737-48234ee50a3a'
|
||||
CTE_SERIE = 'F25/'
|
||||
CTE_STATUS_INVOICE = 'issued'
|
||||
CTE_IS_PROFORMA = 0
|
||||
CTE_STATUS_VERIFACTU = 'Pendiente'
|
||||
CTE_LANGUAGE_CODE = 'es' #En uecko vendrá de su ficha
|
||||
CTE_COUNTRY_CODE = 'es' #En uecko vendrá de su ficha
|
||||
CTE_IS_COMPANY = 1
|
||||
CTE_SYNC_RESULT_OK = 1
|
||||
CTE_SYNC_RESULT_FAIL = 2
|
||||
|
||||
VERIFACTU_API_KEY = vf_test_ei8WYAvEq5dhSdEyQVjgCS8NZaNpEK2BljSHSUXf+Y0=
|
||||
VERIFACTU_BASE_URL = https://api.verifacti.com/
|
||||
VERIFACTU_NIFS_API_KEY = vfn_osYpNdqSzAdTAHpazXG2anz4F3o0gfbSb5FFrCBZcno=
|
||||
17
scripts/stack.arribas.env
Normal file
17
scripts/stack.arribas.env
Normal file
@ -0,0 +1,17 @@
|
||||
# Identidad de la compañía
|
||||
COMPANY=arribas
|
||||
|
||||
# Dominios
|
||||
DOMAIN=arribas.factuges.app
|
||||
|
||||
# MariaDB
|
||||
DB_ROOT_PASS=cQF#qRM*JU+tDyf
|
||||
DB_USER=arribas
|
||||
DB_PASS=r@U8%GJ+2e/AWR
|
||||
DB_NAME=factuges_arribas
|
||||
DB_PORT=3306
|
||||
|
||||
# API
|
||||
API_PORT=3002
|
||||
API_IMAGE=tu-registry/factuges-api:latest
|
||||
FRONTEND_URL=https://arribas.factuges.app
|
||||
Loading…
Reference in New Issue
Block a user