updated docker compose
This commit is contained in:
@@ -14,7 +14,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "${DB_PORT:-3306}:3306"
|
- "${DB_PORT:-3306}:3306"
|
||||||
volumes:
|
volumes:
|
||||||
- mariadb_data:/var/lib/mysql
|
- /srv/docker-test/mariadb:/var/lib/mysql
|
||||||
- ./init-db.sql:/docker-entrypoint-initdb.d/01-init.sql
|
- ./init-db.sql:/docker-entrypoint-initdb.d/01-init.sql
|
||||||
networks:
|
networks:
|
||||||
- recticel-network
|
- recticel-network
|
||||||
@@ -54,9 +54,12 @@ services:
|
|||||||
- "${APP_PORT:-8781}:8781"
|
- "${APP_PORT:-8781}:8781"
|
||||||
volumes:
|
volumes:
|
||||||
# Mount logs directory for persistence
|
# Mount logs directory for persistence
|
||||||
- ./logs:/srv/quality_recticel/logs
|
- /srv/docker-test/logs:/srv/quality_recticel/logs
|
||||||
# Mount instance directory for config persistence (optional)
|
# Mount instance directory for config persistence
|
||||||
- ./instance:/app/instance
|
- /srv/docker-test/instance:/app/instance
|
||||||
|
# Mount app code for easy updates (DISABLED - causes config issues)
|
||||||
|
# Uncomment only for development, not production
|
||||||
|
# - /srv/docker-test/app:/app
|
||||||
networks:
|
networks:
|
||||||
- recticel-network
|
- recticel-network
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@@ -70,6 +73,5 @@ networks:
|
|||||||
recticel-network:
|
recticel-network:
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|
||||||
volumes:
|
# Note: Using bind mounts to /srv/docker-test/ instead of named volumes
|
||||||
mariadb_data:
|
# This allows easier access and management of persistent data
|
||||||
driver: local
|
|
||||||
|
|||||||
@@ -266,9 +266,72 @@ def create_permissions_tables():
|
|||||||
print_error(f"Failed to create permissions tables: {e}")
|
print_error(f"Failed to create permissions tables: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def create_users_table_mariadb():
|
||||||
|
"""Create users and roles tables in MariaDB and seed superadmin"""
|
||||||
|
print_step(6, "Creating MariaDB Users and Roles Tables")
|
||||||
|
|
||||||
|
try:
|
||||||
|
conn = mariadb.connect(**DB_CONFIG)
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
# Create users table in MariaDB
|
||||||
|
users_table_query = """
|
||||||
|
CREATE TABLE IF NOT EXISTS users (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
username VARCHAR(100) UNIQUE NOT NULL,
|
||||||
|
password VARCHAR(255) NOT NULL,
|
||||||
|
role VARCHAR(50) NOT NULL,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
cursor.execute(users_table_query)
|
||||||
|
print_success("Table 'users' created successfully")
|
||||||
|
|
||||||
|
# Create roles table in MariaDB
|
||||||
|
roles_table_query = """
|
||||||
|
CREATE TABLE IF NOT EXISTS roles (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
name VARCHAR(100) UNIQUE NOT NULL,
|
||||||
|
access_level VARCHAR(50) NOT NULL,
|
||||||
|
description TEXT,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
cursor.execute(roles_table_query)
|
||||||
|
print_success("Table 'roles' created successfully")
|
||||||
|
|
||||||
|
# Insert superadmin role if not exists
|
||||||
|
cursor.execute("SELECT COUNT(*) FROM roles WHERE name = %s", ('superadmin',))
|
||||||
|
if cursor.fetchone()[0] == 0:
|
||||||
|
cursor.execute("""
|
||||||
|
INSERT INTO roles (name, access_level, description)
|
||||||
|
VALUES (%s, %s, %s)
|
||||||
|
""", ('superadmin', 'full', 'Full access to all app areas and functions'))
|
||||||
|
print_success("Superadmin role created")
|
||||||
|
|
||||||
|
# Insert superadmin user if not exists
|
||||||
|
cursor.execute("SELECT COUNT(*) FROM users WHERE username = %s", ('superadmin',))
|
||||||
|
if cursor.fetchone()[0] == 0:
|
||||||
|
cursor.execute("""
|
||||||
|
INSERT INTO users (username, password, role)
|
||||||
|
VALUES (%s, %s, %s)
|
||||||
|
""", ('superadmin', 'superadmin123', 'superadmin'))
|
||||||
|
print_success("Superadmin user created (username: superadmin, password: superadmin123)")
|
||||||
|
else:
|
||||||
|
print_success("Superadmin user already exists")
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
cursor.close()
|
||||||
|
conn.close()
|
||||||
|
return True
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print_error(f"Failed to create users tables in MariaDB: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
def create_sqlite_tables():
|
def create_sqlite_tables():
|
||||||
"""Create SQLite tables for users and roles"""
|
"""Create SQLite tables for users and roles (legacy/backup)"""
|
||||||
print_step(6, "Creating SQLite User and Role Tables")
|
print_step(7, "Creating SQLite User and Role Tables (Backup)")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Create instance folder if it doesn't exist
|
# Create instance folder if it doesn't exist
|
||||||
@@ -325,7 +388,7 @@ def create_sqlite_tables():
|
|||||||
|
|
||||||
def create_database_triggers():
|
def create_database_triggers():
|
||||||
"""Create database triggers for automatic quantity calculations"""
|
"""Create database triggers for automatic quantity calculations"""
|
||||||
print_step(7, "Creating Database Triggers")
|
print_step(8, "Creating Database Triggers")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
conn = mariadb.connect(**DB_CONFIG)
|
conn = mariadb.connect(**DB_CONFIG)
|
||||||
@@ -393,7 +456,7 @@ def create_database_triggers():
|
|||||||
|
|
||||||
def populate_permissions_data():
|
def populate_permissions_data():
|
||||||
"""Populate permissions and roles with default data"""
|
"""Populate permissions and roles with default data"""
|
||||||
print_step(8, "Populating Permissions and Roles Data")
|
print_step(9, "Populating Permissions and Roles Data")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
conn = mariadb.connect(**DB_CONFIG)
|
conn = mariadb.connect(**DB_CONFIG)
|
||||||
@@ -514,16 +577,23 @@ def populate_permissions_data():
|
|||||||
|
|
||||||
def update_external_config():
|
def update_external_config():
|
||||||
"""Update external_server.conf with correct database settings"""
|
"""Update external_server.conf with correct database settings"""
|
||||||
print_step(9, "Updating External Server Configuration")
|
print_step(10, "Updating External Server Configuration")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
config_path = os.path.join(os.path.dirname(__file__), '../../instance/external_server.conf')
|
config_path = os.path.join(os.path.dirname(__file__), '../../instance/external_server.conf')
|
||||||
|
|
||||||
config_content = """server_domain=localhost
|
# Use environment variables if available (Docker), otherwise use defaults
|
||||||
port=3306
|
db_host = os.getenv('DB_HOST', 'localhost')
|
||||||
database_name=trasabilitate
|
db_port = os.getenv('DB_PORT', '3306')
|
||||||
username=trasabilitate
|
db_name = os.getenv('DB_NAME', 'trasabilitate')
|
||||||
password=Initial01!
|
db_user = os.getenv('DB_USER', 'trasabilitate')
|
||||||
|
db_password = os.getenv('DB_PASSWORD', 'Initial01!')
|
||||||
|
|
||||||
|
config_content = f"""server_domain={db_host}
|
||||||
|
port={db_port}
|
||||||
|
database_name={db_name}
|
||||||
|
username={db_user}
|
||||||
|
password={db_password}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Create instance directory if it doesn't exist
|
# Create instance directory if it doesn't exist
|
||||||
@@ -532,7 +602,7 @@ password=Initial01!
|
|||||||
with open(config_path, 'w') as f:
|
with open(config_path, 'w') as f:
|
||||||
f.write(config_content)
|
f.write(config_content)
|
||||||
|
|
||||||
print_success("External server configuration updated")
|
print_success(f"External server configuration updated (host: {db_host})")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -541,7 +611,7 @@ password=Initial01!
|
|||||||
|
|
||||||
def verify_database_setup():
|
def verify_database_setup():
|
||||||
"""Verify that all tables were created successfully"""
|
"""Verify that all tables were created successfully"""
|
||||||
print_step(10, "Verifying Database Setup")
|
print_step(11, "Verifying Database Setup")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
conn = mariadb.connect(**DB_CONFIG)
|
conn = mariadb.connect(**DB_CONFIG)
|
||||||
@@ -559,7 +629,9 @@ def verify_database_setup():
|
|||||||
'permissions',
|
'permissions',
|
||||||
'role_permissions',
|
'role_permissions',
|
||||||
'role_hierarchy',
|
'role_hierarchy',
|
||||||
'permission_audit_log'
|
'permission_audit_log',
|
||||||
|
'users',
|
||||||
|
'roles'
|
||||||
]
|
]
|
||||||
|
|
||||||
print("\n📊 MariaDB Tables Status:")
|
print("\n📊 MariaDB Tables Status:")
|
||||||
@@ -614,6 +686,7 @@ def main():
|
|||||||
create_order_for_labels_table,
|
create_order_for_labels_table,
|
||||||
create_warehouse_locations_table,
|
create_warehouse_locations_table,
|
||||||
create_permissions_tables,
|
create_permissions_tables,
|
||||||
|
create_users_table_mariadb,
|
||||||
create_sqlite_tables,
|
create_sqlite_tables,
|
||||||
create_database_triggers,
|
create_database_triggers,
|
||||||
populate_permissions_data,
|
populate_permissions_data,
|
||||||
|
|||||||
Reference in New Issue
Block a user