# Tag to add mysql sidecar # # Examples: # tags: # - docker-services-restart: # policy: always # services: # - srv1 # - mysqldb # Default imports local stack_data = std.parseJson(std.extVar('stack_data')); local docker_data = std.parseJson(std.extVar('docker_data')); local user_data = std.parseJson(std.extVar('user_data')); ## Internal vars local docker_service = std.get(docker_data, 'service', default={}); local docker_services = std.get(docker_data, 'services', default={docker_service: null }); local docker_services_names = std.objectFields(docker_services); local services_names = std.get(user_data, 'services', default=docker_services_names); # # ## System options #local service_ns = std.get(stack_data, 'namespace', default=''); #local service_stack = std.get(stack_data, 'current_stack', default=''); # User options with defaults #local service_default_net = service_ns + "_traefik"; #local service_network = std.get(user_data, 'network', default=service_default_net ); #local service_top_domain = std.get(user_data, 'top_domain', default='dev.box'); local service_name = std.get(user_data, 'name', default='mysql'); local service_image = std.get(user_data, 'image', default='mariadb:10'); # MySQL settings local service_root_password = std.get(user_data, 'root_password', default=''); local service_root_password_random = std.get(user_data, 'root_password_random', default=false); local service_user_password = std.get(user_data, 'user_password', default=''); local service_user_name = std.get(user_data, 'user_name', default=std.get(stack_data, 'current_stack', default='db')); local service_user_db = std.get(user_data, 'user_db', default=service_user_name); #local service_port = std.get(user_data, 'port', default='80'); #local service_entrypoints = std.get(user_data, 'entrypoints', default='front-http'); # #local service_app = std.get(user_data, 'name', default=service_name); #local service_domain = std.get(user_data, 'domain', default=service_app + '.' + service_top_domain); # #local service_tls = std.get(user_data, 'tls', default=false); #local service_certresolver = std.get(user_data, 'certresolver', default=null); #local service_auth = std.get(user_data, 'auth', default=null); # This would eventually also contain stack name to avoid collisions #local service_id = service_ns + "_" + service_name; #local service_id = service_ns + "_" + service_stack + "_" + service_name; # Process docker_data + { # Append mysql network to the list of networks networks+: { mysql: null }, # Append mysql netwok to all requested services services+: { [svc_name]+: { networks+: { mysql: null } } for svc_name in services_names }, } + { # Append mysql sidecar services+: { [service_name]+: { environment: { MYSQL_RANDOM_ROOT_PASSWORD: service_root_password_random, MYSQL_ROOT_PASSWORD: service_root_password, MYSQL_PASSWORD: service_user_password, MYSQL_USER: service_user_name, MYSQL_DATABASE: service_user_db, }, image: service_image, networks: { mysql: null, }, volumes: [], }, }, // zzz: { // a1: stack_data, // a2: user_data, // }, }