docker-compose/.paasify/plugins/sidecar-mysql.jsonnet
2022-07-29 02:23:23 -04:00

103 lines
3.2 KiB
Jsonnet

# 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,
// },
}