我尝试了以下内容:
docker pull apereo / cas docker run -p 80:8080 -p 443:8443 -d --name =“cas”apereo / cas:v5.2.2
然后我做了:ignored
我将etc / cas / cas.properties文件设置为:
docker exec -it /bin/bash
(并填写运行./bin/run-cas.sh后填充的自动生成的密钥)
然后我跑了:keytool -genkey -keyalg RSA -alias cas -keystore thekeystore -storepass changeit -validity 9999 -keysize 2048
问题是,当我尝试重新运行./bin/run-cas.sh时,我收到错误:
配置为侦听端口8443的Tomcat连接器失败 开始。端口可能已在使用中,或者连接器可能已在使用中 配置错误。
在我的本地计算机上运行CAS是否还需要做其他事情?
答案 0 :(得分:0)
当您运行容器时,它会执行Dockerfile中的ENTRYPOINT或CMD。 In the case of apero/cas CMD ["/cas-overlay/bin/run-cas.sh"]
。docker exec
。可能发生的是这个脚本以某种身份运行cas并使用端口8443。
现在,当您ps aux
进入容器时,您正在容器中运行其他进程。你是一个不同的过程。如果你在容器内run-cas.sh
,你可以看到我在说什么,你会看到CMD通过bash运行。现在,当您运行docker run -p 80:8080 -p 443:8443 -d --name="cas" apereo/cas:v5.2.2 /bin/bash
时,它会尝试使用端口8443运行某些内容(再次),但是已经在容器中分配了该端口,因此您会收到错误。
试试这个。 /bin/bash
。当您将run-cas.sh
添加到结尾时,您将覆盖Dockerfile中的CMD,因此第一个docker exec
不会运行,并且8443未分配给进程。这与使用protected:
/**
* 'c' is the underlying container. Maintainers wondering why
* this isn't uglified as per style guidelines should note that
* this name is specified in the standard, [23.2.3.1]. (Why?
* Presumably for the same reason that it's protected instead
* of private: to allow derivation. But none of the other
* containers allow for derivation. Odd.)
*/
_Sequence c;
的功能类似,只是在执行初始命令之前运行bash 。那么你应该可以做你想要做的所有事情(我对cas一无所知)没有这个端口8443错误。