making it possible to add volumes to the docker section of the project file

This commit is contained in:
ronnyabraham 2022-09-01 22:24:49 +03:00
parent d4b8859d91
commit dbc60c1cdc
3 changed files with 70 additions and 0 deletions

View file

@ -122,6 +122,15 @@ def generate():
context['database_pass'] = configuration.server.database.admin.password
context['database_name'] = configuration.server.database.name
if hasattr(configuration.docker.database, 'volumes') and \
hasattr(configuration.docker.database.volumes, 'data'):
context['docker_volume_data_external'] = \
configuration.docker.database.volumes.data.external
context['docker_volume_data_internal'] = \
configuration.docker.database.volumes.data.internal
if env.debug:
for key in context.keys():
logger.debug("context[{key}] : {value}".format(

View file

@ -989,6 +989,60 @@ def _init_docker(configuration, layout, config):
configuration.docker.database.container_name = \
config['docker']['database']['name']
#
# if the project file contains a 'volumes' reference it means
# that we are using an external directory to store data
#
# normally this will be generated, ie there is no 'paths' keys
# under 'volumes.data', but if 'paths' is specified, then we
# will look for an 'external' and 'internal' paths to apply
if 'volumes' in config['docker']['database'] and \
'data' in config['docker']['database']['volumes']:
configuration.docker.database.addbranch("volumes")
configuration.docker.database.volumes.addbranch("data")
configuration.docker.database.volumes.data.internal = \
"/var/lib/postgresql/data"
workingdir = "{root}/{projectname}/{branch}".format(
root=config['project']['paths']['root'],
projectname=config['project']['name'],
branch=config['project']['branch'])
varlocation = "/var/%s/data" % config[
'docker']['database']['image']
configuration.docker.database.volumes.data.external = \
"{workingdir}{varlocation}".format(
workingdir=workingdir,
varlocation=varlocation)
# "/home/website/ronnyabraham/staging/var/postgresql/data"
#
# to make it a bit easier to read I'm referencing the part
# of the config dictioanry we are using
docker_volume = config['docker']['database']['volumes']
docker_volume_data = docker_volume['data']
#
# if external and internal paths were specified, then we will
# use that instead
if docker_volume_data is not None and \
type(docker_volume_data) is dict and \
'paths' in docker_volume_data:
if 'external' in docker_volume_data['paths']:
configuration.docker.database.volumes.data.external = \
docker_volume_data['paths']['external']
if 'internal' in docker_volume_data['paths']:
configuration.docker.database.volumes.data.internal = \
docker_volume_data['paths']['internal']
#
# not sure what "service name" is for
configuration.docker.database.service_name = \

View file

@ -13,3 +13,10 @@ services:
{{ docker_database_env_db }} : "{{ database_name }}"
container_name: {{ docker_container_name }}
{%- if docker_volume_data_external is defined %}
{% if docker_volume_data_internal is defined %}
volumes:
- {{ docker_volume_data_external }}:{{ docker_volume_data_internal }}
{% endif %}
{% endif %}