Docker app port redirection problem


#1

My docker app “exposes” port 8080. As this port is used by a couple of technologies, I’d like to redirect it to 8070 and also request port 8070 exclusively. With these settings:

I’m getting this error:

17220 actions.remove                   18-05-29 10:17:59 [   DEBUG]: /usr/sbin/univention-run-join-scripts returned with 0
 17220 packages                         18-05-29 10:17:59 [   DEBUG]: Releasing LOCK
 17220 actions.upgrade-search           18-05-29 10:18:00 [   DEBUG]: Calling upgrade-search
 17220 actions.upgrade-search.progress  18-05-29 10:18:00 [   DEBUG]: 0
 17220 actions.upgrade-search           18-05-29 10:18:00 [   DEBUG]: Checking 4.1/sphairas=0.1
 17220 actions.upgrade-search.progress  18-05-29 10:18:00 [   DEBUG]: 100
 17220 actions.remove.progress          18-05-29 10:18:00 [   DEBUG]: 100
 17220 utils                            18-05-29 10:18:00 [   DEBUG]: send_information: action=install app=sphairas value=ldapError('Type or value exists: univentionAppDescription: value #0 provided more than once',) status=500
 17220 utils                            18-05-29 10:18:00 [   DEBUG]: tracking information: {'status': 500, 'uuid': '150d8727-d0e3-49b3-befa-c0c1147e0c2f', 'app': u'sphairas', 'value': "ldapError('Type or value exists: univentionAppDescription: value #0 provided more than once',)", 'version': u'0.1', 'role': 'domaincontroller_master', 'action': 'install', 'system-uuid': 'f4146e23-9531-4667-8321-36f34892cfee'}
 17220 actions.upgrade-search           18-05-29 10:18:01 [   DEBUG]: Calling upgrade-search
 17220 actions.upgrade-search.progress  18-05-29 10:18:01 [   DEBUG]: 0
 17220 actions.upgrade-search           18-05-29 10:18:01 [   DEBUG]: Checking 4.1/sphairas=0.1
 17220 actions.upgrade-search.progress  18-05-29 10:18:01 [   DEBUG]: 100
 17220 actions.install                  18-05-29 10:18:01 [   ERROR]: Type or value exists: univentionAppDescription: value #0 provided more than once
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/univention/appcenter/actions/__init__.py", line 226, in call_with_namespace
    result = self.main(namespace)
  File "/usr/lib/pymodules/python2.7/univention/appcenter/actions/install.py", line 73, in main
    return self.do_it(args)
  File "/usr/lib/pymodules/python2.7/univention/appcenter/actions/install_base.py", line 105, in do_it
    self._do_it(app, args)
  File "/usr/lib/pymodules/python2.7/univention/appcenter/actions/docker_install.py", line 63, in _do_it
    ret = super(Install, self)._do_it(app, args)
  File "/usr/lib/pymodules/python2.7/univention/appcenter/actions/install.py", line 84, in _do_it
    self._register_app(app, args)
  File "/usr/lib/pymodules/python2.7/univention/appcenter/actions/register.py", line 330, in _register_app
    ldap_object = get_app_ldap_object(app, lo, pos, or_create=True)
  File "/usr/lib/pymodules/python2.7/univention/appcenter/udm.py", line 264, in get_app_ldap_object
    return ApplicationLDAPObject(app, lo, pos, or_create)
  File "/usr/lib/pymodules/python2.7/univention/appcenter/udm.py", line 164, in __init__
    self._reload(app, create_if_not_exists)
  File "/usr/lib/pymodules/python2.7/univention/appcenter/udm.py", line 179, in _reload
    self._create_obj(app)
  File "/usr/lib/pymodules/python2.7/univention/appcenter/udm.py", line 215, in _create_obj
    obj = create_object_if_not_exists('appcenter/app', self._lo, self._pos, **attrs)
  File "/usr/lib/pymodules/python2.7/univention/appcenter/udm.py", line 97, in create_object_if_not_exists
    obj.create()
  File "/usr/lib/pymodules/python2.7/univention/admin/handlers/__init__.py", line 483, in create
    dn = self._create(response=response, serverctrls=serverctrls)
  File "/usr/lib/pymodules/python2.7/univention/admin/handlers/__init__.py", line 1030, in _create
    self.lo.add(self.dn, al, serverctrls=serverctrls, response=response)
  File "/usr/lib/pymodules/python2.7/univention/admin/uldap.py", line 482, in add
    raise univention.admin.uexceptions.ldapError(_err2str(msg), original_exception=msg)
ldapError: Type or value exists: univentionAppDescription: value #0 provided more than once

What am I doing wrong?

If I simply switch the settings (“host port to be forwarded”: 8080, “container port”: 8070), the installation returns successfully. But this is, of course, not what I want.


#2

Hi,

please try to remove the complete list of “ports to be acquired exclusively”. Those two lists (“exclusive” and “redirection”) are in fact put together, so you do not need to specify the ports in two places. The wording in the Provider Portal is not very helpful, though. Adding 8070 to the list of exclusive ports is essentially as if you would have added 8070/8070 to the list of port redirections. Therefore there is a conflict.

I am a bit puzzled why this should lead to such a traceback. I will look into it, but in the meantime, you should be fine with an empty “exclusive ports” list.


#3

Thank you, I’ve removed the ports-exclusive part and I got it to work you.
However, the other error keeps recurring at times and I don’t know why. I’m installing and uninstalling my app many times repeatedly to test it, and it seems the error occurs if I install, uninstall and then reinstall it without any changes in the provider-test-app-center. But I’m not sure…
Boris


#4

I think, we found it. This is a very ugly bug and shall be fixed soon. Until then, you need to provide a translation to Description and LongDescription in the Provider Portal (Tab Translation). This indeed has nothing to do with any port configuration but is a general bug in the App Center.