Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

changes for improved kitodo docker compose #23

Merged
merged 46 commits into from
Jun 27, 2022
Merged

Conversation

markusweigelt
Copy link
Collaborator

No description provided.

Copy link
Member

@bertsky bertsky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great stuff. (But the Makefile and Readme must be adapted, too.)

IMO it makes sense to keep docker-compose.kitodo-app.yml separate for 2 reasons:

  • we want to switch between managed and standalone independent of the Kitodo services
  • perhaps someone wants to run without the Kitodo services (by not adding that to COMPOSE_FILE)

The latter could even be supported in the makefile with a MODE choice or similar.

(For example, MODE=native for native Kitodo installation but Dockerized Manager and Controller. Or we make it more clear by renaming: CONTROLLER=managed vs CONTROLLER=standalone and PRODUCTION=managed vs PRODUCTION=standalone.)

docker-compose.kitodo-app.yml Outdated Show resolved Hide resolved
docker-compose.kitodo-app.override.yml Outdated Show resolved Hide resolved
@markusweigelt markusweigelt requested a review from bertsky June 13, 2022 16:34
Copy link
Member

@bertsky bertsky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand all parts yet...

Makefile Outdated Show resolved Hide resolved
.env Outdated
APP_BUILD_RESOURCES=${APP_BUILD_CONTEXT}/build-resources
APP_BUILD_RESOURCES=./build-resources
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why even remove APP_BUILD_CONTEXT here, how can that work?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cause of APP_BUILD_CONTEXT we are already in context and we can only build image below this context.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cause of APP_BUILD_CONTEXT we are already in context and we can only build image below this context.

I don't understand that, grammatically.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cause of the APP_BUILD_CONTEXT env we are already in the directory of Dockerfile to build image of resources. In order not to break out of it e.g. by change into a parent directory with absolute paths, I set here the APP_BUILD_RESOURCES relatively.

.env Outdated Show resolved Hide resolved
Makefile Show resolved Hide resolved

./kitodo: ./_resources/config_modules.zip

./kitodo: ./_resources/config_modules.zip
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still hesitant to completely skip telling make about ./_resources/config_modules.zip – but if its just a provisional state, ok.

Makefile Outdated Show resolved Hide resolved
bertsky and others added 2 commits June 14, 2022 18:13
…docker, ajust docker compose to use new overwrites directory provided by the kitodo docker image and improve makefile to handle new data structure
@markusweigelt
Copy link
Collaborator Author

markusweigelt commented Jun 16, 2022

Branch includes a new structuring of the sample data and an implementation to make them available in Kitodo.Production now.

@markusweigelt markusweigelt requested a review from bertsky June 16, 2022 11:45
@bertsky
Copy link
Member

bertsky commented Jun 16, 2022

I need https://github.com/markusweigelt/kitodo-production-docker/pull/10 to start up without errors, but still when I enter the App URL I end up on http://localhost:8080/kitodo/pages/login.jsf – a nearly empty page without login input fields.

@bertsky
Copy link
Member

bertsky commented Jun 17, 2022

With the current version I get a new problem when issueing the OCR task:

result page with stack trace

    java.lang.IllegalArgumentException: /usr/local/kitodo/rulesets/ruleset_default.xml (No such file or directory)
    	at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:196)
    	at org.kitodo.utils.JAXBContextCache.getUnmarshalled(JAXBContextCache.java:90)
    	at org.kitodo.dataeditor.ruleset.RulesetManagement.read(RulesetManagement.java:283)
    	at org.kitodo.dataeditor.ruleset.RulesetManagement.load(RulesetManagement.java:221)
    	at org.kitodo.production.helper.metadata.legacytypeimplementations.LegacyPrefsHelper.loadPrefs(LegacyPrefsHelper.java:130)
    	at org.kitodo.production.services.data.RulesetService.getPreferences(RulesetService.java:210)
    	at org.kitodo.production.services.data.TaskService.executeScript(TaskService.java:476)
    	at org.kitodo.production.services.command.KitodoScriptService.runScript(KitodoScriptService.java:453)
    	at org.kitodo.production.services.command.KitodoScriptService.executeOtherScript(KitodoScriptService.java:182)
    	at org.kitodo.production.services.command.KitodoScriptService.executeScript(KitodoScriptService.java:166)
    	at org.kitodo.production.services.command.KitodoScriptService.execute(KitodoScriptService.java:121)
    	at org.kitodo.production.forms.ProcessForm.executeKitodoScriptForProcesses(ProcessForm.java:645)
    	at org.kitodo.production.forms.ProcessForm.executeKitodoScriptSelection(ProcessForm.java:639)
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
    	at org.apache.el.parser.AstValue.invoke(AstValue.java:252)
    	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:266)
    	at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
    	at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
    	at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
    	at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
    	at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96)
    	at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:74)
    	at org.springframework.faces.webflow.FlowActionListener.processAction(FlowActionListener.java:71)
    	at org.springframework.faces.model.SelectionTrackingActionListener.processAction(SelectionTrackingActionListener.java:64)
    	at javax.faces.component.UICommand.broadcast(UICommand.java:120)
    	at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1255)
    	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:420)
    	at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1741)
    	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:935)
    	at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:42)
    	at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:195)
    	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:142)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:204)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    	at org.kitodo.production.servletfilter.EncodingFilter.doFilter(EncodingFilter.java:69)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    	at org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:181)
    	at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)
    	at org.kitodo.production.security.SecurityObjectAccessFilter.doFilter(SecurityObjectAccessFilter.java:86)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)
    	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122)
    	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)
    	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    	at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:147)
    	at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:219)
    	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:213)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)
    	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
    	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)
    	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
    	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)
    	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)
    	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354)
    	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    	at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
    	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
    	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)
    	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.base/java.lang.Thread.run(Unknown Source)

    [Impressum](http://sdvocr:8080/kitodo/pages/processes.jsf?tabIndex=0#) [Datenschutz](http://sdvocr:8080/kitodo/pages/processes.jsf?tabIndex=0#) [Nutzungsbedingungen](http://sdvocr:8080/kitodo/pages/processes.jsf?tabIndex=0#) 

KITODO.PRODUCTION Version 3.4.3-SNAPSHOT

@markusweigelt
Copy link
Collaborator Author

markusweigelt commented Jun 23, 2022

@bertsky logs before traceback

In my case following error occurs after ocrd-import.

Could you please post the logs before that? (We should now see the workflow itself during init.)

# ocrd-controller:22 SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.7

# ocrd-controller:22 SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.7

# ocrd-controller:22 SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.7

[ OK ] OpenBSD Secure Shell server sshd        

[ OK ] enhanced syslogd rsyslogd        

Jun 23 14:00:34 ocrd-manager rsyslogd: rsyslogd's groupid changed to 102

Jun 23 14:00:34 ocrd-manager rsyslogd: rsyslogd's userid changed to 101

Jun 23 14:00:34 ocrd-manager rsyslogd:  [origin software="rsyslogd" swVersion="8.32.0" x-pid="57" x-info="http://www.rsyslog.com"] start

Jun 23 14:09:06 ocrd-manager for_production.sh: ocr_init initialize variables and directory structure

Jun 23 14:09:06 ocrd-manager for_production.sh: running with 3 26 /data/3 deu Fraktur CONTROLLER=ocrd-controller:22

Jun 23 14:09:06 ocrd-manager for_production.sh: ocr_exit in async mode - immediate termination of the script

Jun 23 14:09:06 ocrd-manager for_production.sh: '/data/3/images' -> 'ocr-d//data/3'

Jun 23 14:09:06 ocrd-manager for_production.sh: '/data/3/images/FILE_0013_ORIGINAL.jpg' -> 'ocr-d//data/3/FILE_0013_ORIGINAL.jpg'

Jun 23 14:09:06 ocrd-manager for_production.sh: '/data/3/images/FILE_0010_ORIGINAL.jpg' -> 'ocr-d//data/3/FILE_0010_ORIGINAL.jpg'

Jun 23 14:09:06 ocrd-manager for_production.sh: '/data/3/images/FILE_0014_ORIGINAL.jpg' -> 'ocr-d//data/3/FILE_0014_ORIGINAL.jpg'

Jun 23 14:09:06 ocrd-manager for_production.sh: '/data/3/images/FILE_0011_ORIGINAL.jpg' -> 'ocr-d//data/3/FILE_0011_ORIGINAL.jpg'

Jun 23 14:09:06 ocrd-manager for_production.sh: '/data/3/images/FILE_0012_ORIGINAL.jpg' -> 'ocr-d//data/3/FILE_0012_ORIGINAL.jpg'

Jun 23 14:09:06 ocrd-manager for_production.sh: execute commands via ssh by the controller

Jun 23 14:09:13 ocrd-manager for_production.sh: /data/ocr-d/data/3

Jun 23 14:09:41 ocrd-manager for_production.sh: Traceback (most recent call last):

Jun 23 14:09:41 ocrd-manager for_production.sh:   File "/usr/local/bin/ocrd", line 33, in <module>

Jun 23 14:09:41 ocrd-manager for_production.sh:     sys.exit(load_entry_point('ocrd', 'console_scripts', 'ocrd')())

Jun 23 14:09:41 ocrd-manager for_production.sh:   File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 1128, in __call__

Jun 23 14:09:41 ocrd-manager for_production.sh:     return self.main(*args, **kwargs)

Jun 23 14:09:41 ocrd-manager for_production.sh:   File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 1053, in main

Jun 23 14:09:41 ocrd-manager for_production.sh:     rv = self.invoke(ctx)

Jun 23 14:09:41 ocrd-manager for_production.sh:   File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 1659, in invoke

Jun 23 14:09:41 ocrd-manager for_production.sh:     return _process_result(sub_ctx.command.invoke(sub_ctx))

Jun 23 14:09:41 ocrd-manager for_production.sh:   File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 1659, in invoke

Jun 23 14:09:41 ocrd-manager for_production.sh:     return _process_result(sub_ctx.command.invoke(sub_ctx))

Jun 23 14:09:41 ocrd-manager for_production.sh:   File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 1395, in invoke

Jun 23 14:09:41 ocrd-manager for_production.sh:     return ctx.invoke(self.callback, **ctx.params)

Jun 23 14:09:41 ocrd-manager for_production.sh:   File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 754, in invoke

Jun 23 14:09:41 ocrd-manager for_production.sh:     return __callback(*args, **kwargs)

Jun 23 14:09:41 ocrd-manager for_production.sh:   File "/build/core/ocrd/ocrd/cli/validate.py", line 112, in validate_process

Jun 23 14:09:41 ocrd-manager for_production.sh:     _inform_of_result(validate_tasks([ProcessorTask.parse(t) for t in tasks], Workspace(Resolver(), directory=workspace), page_id=page_id, overwrite=overwrite))

Jun 23 14:09:41 ocrd-manager for_production.sh:   File "/build/core/ocrd/ocrd/task_sequence.py", line 169, in validate_tasks

Jun 23 14:09:41 ocrd-manager for_production.sh:     task.validate()

Jun 23 14:09:41 ocrd-manager for_production.sh:   File "/build/core/ocrd/ocrd/task_sequence.py", line 71, in validate

Jun 23 14:09:41 ocrd-manager for_production.sh:     raise Exception("Executable not found in PATH: %s" % self.executable)

Jun 23 14:09:41 ocrd-manager for_production.sh: Exception: Executable not found in PATH: ocrd-ocrd

@markusweigelt
Copy link
Collaborator Author

@bertsky Sorry for the last change. I'll try to pay more attention to .env changes.

@bertsky
Copy link
Member

bertsky commented Jun 24, 2022

If you update the Manager (after merging slub/ocrd_manager#25) and Controller (with latest master), then everything should work again. (With logging now mirrored between Controller and Manager, and workspace names independent between Controller and Manager.)

Makefile Outdated
Comment on lines 9 to 14
ifeq ($(shell test -e .env.local && echo -n yes),yes)
COMPOSE_ENV_FILE ?= .env.local
else
COMPOSE_ENV_FILE ?= .env
endif

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Less verbose version:

Suggested change
ifeq ($(shell test -e .env.local && echo -n yes),yes)
COMPOSE_ENV_FILE ?= .env.local
else
COMPOSE_ENV_FILE ?= .env
endif
COMPOSE_ENV_FILE = $(firstword $(wildcard .env.local .env))

@markusweigelt
Copy link
Collaborator Author

@bertsky Still made the changes discussed. In the docker-compose for the manager I added an environment variable MANAGER_CONTROLLER_PORT_SSH to distinguish the container port from the host port cause of conflict in managed mode.

@markusweigelt markusweigelt merged commit 11c4c1c into main Jun 27, 2022
@bertsky
Copy link
Member

bertsky commented Jun 27, 2022

In the docker-compose for the manager I added an environment variable MANAGER_CONTROLLER_PORT_SSH to distinguish the container port from the host port cause of conflict in managed mode.

@markusweigelt I don't understand that. Where is this variable used/referenced? Why not just use CONTROLLER_PORT_SSH?

@markusweigelt markusweigelt deleted the changes_for_kitodo branch June 27, 2022 08:51
@markusweigelt
Copy link
Collaborator Author

markusweigelt commented Jun 27, 2022

@markusweigelt I don't understand that. Where is this variable used/referenced? Why not just use CONTROLLER_PORT_SSH?

@bertsky CONTROLLER_PORT_SSH is the port of container to the host system. In default network in bridge mode the internal container ssh port in manager is used. So to distinguish between these two ports and to maybe contect to controller with ssh from host system I have added these env.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants