# HG changeset patch # User Vincent Hatakeyama <vincent.hatakeyama@xcg-consulting.fr> # Date 1562674152 -7200 # Tue Jul 09 14:09:12 2019 +0200 # Node ID 4f0257e9564c5f7e092c2de74c5dc473d888dc0f # Parent 07c327d902e5aad83d79a803b0f2edac80ef1ad9 📠handle odoo 7 mount points better to keep sessions also cleaned up handling mount points diff --git a/docker_dev_start.py b/docker_dev_start.py --- a/docker_dev_start.py +++ b/docker_dev_start.py @@ -514,29 +514,50 @@ password = 'odoo' # data volume handling - if odoo_type != 'odoo7': - data_volume_name = '{}_data'.format(project_name) - _logger.debug('Using data volume %s', data_volume_name) - createVolume(docker_client, data_volume_name) - # make sure the permission in the volume are correct - mount_opts = '{}:/mnt/data'.format(data_volume_name) - # TODO replace by something cleaner if possible - call([ - 'docker', 'run', '--rm', '-v', - mount_opts, 'busybox', 'chmod', '-R', '777', '/mnt/data', - ]) + if odoo_type == 'odoo7': + _logger.debug('Only sessions volume for this odoo version') + # this path is in odoo code, the last part is the system user + data_volume_path = '/tmp/oe-sessions-{}'.format('odoo') + else: + data_volume_path = '/mnt/data' + arg.append('--data-dir {}'.format(data_volume_path)) + data_volume_name = '{}_data'.format(project_name) + _logger.debug('Using data volume %s', data_volume_name) + createVolume(docker_client, data_volume_name) + # make sure the permission in the volume are correct + mount_opts = '{}:/mnt'.format(data_volume_name) + # TODO replace by something cleaner if possible + call([ + 'docker', 'run', '--rm', '-v', mount_opts, '--entrypoint', + '/bin/chown', image, 'odoo', '/mnt', + ]) - binds.append('{}:/mnt/data'.format(data_volume_name)) - arg.append('--data-dir /mnt/data') - else: - _logger.debug('No data volume for this odoo version') + binds.append('{}:{}'.format(data_volume_name, data_volume_path)) # avoid the duplication of unbind volumes with all addons - # additionnal_addons only in odoo < 10 - for extra_volume in ['additional_addons', 'var', 'data']: - volume_name = '{}_opt_odoo_{}'.format(project_name, extra_volume) + if odoo_type == 'odoo7': + extra_volumes = [ + '/opt/odoo/additional_addons', '/opt/odoo/var', + # not used but declared as a mount point in Dockerfile :-( + '/opt/odoo/data', + ] + elif odoo_type == 'odoo8': + extra_volumes = [ + '/opt/odoo/additional_addons', '/opt/odoo/var', '/opt/odoo/data', + ] + elif odoo_type == 'odoo10': + extra_volumes = [ + '/opt/odoo/additional_addons', '/opt/odoo/var', '/opt/odoo/data', + ] + else: + extra_volumes = [ + '/var/lib/odoo', + ] + for extra_volume in extra_volumes: + volume_name = '{}_{}'.format( + project_name, extra_volume.replace('/', '_')) # volume = createVolume(docker_client, volume_name) - binds.append('{}:/opt/odoo/{}'.format(volume_name, extra_volume)) + binds.append('{}:{}'.format(volume_name, extra_volume)) start_py3o_stack = 'report_py3o_fusion_server' in module_list