103 lines
3.2 KiB
Jsonnet
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,
|
|
// },
|
|
|
|
}
|
|
|
|
|