如何让 docker apero/cas 服务器在本地主机上工作?

How to get docker apero/cas server working on localhost?

我尝试了以下方法:

docker拉apereo/cas docker 运行 -p 80:8080 -p 443:8443 -d --name="cas" apereo/cas:v5.2.2

然后我做:

docker exec -it /bin/bash

我将 etc/cas/cas.properties 文件设置为:

cas.tgc.crypto.encryption.key=
cas.tgc.crypto.signing.key=
cas.webflow.crypto.signing.key=
cas.webflow.crypto.encryption.key=

(并填写在运行ning ./bin/run-cas.sh 之后填充的自动生成的键)

然后我运行:

keytool -genkey -keyalg RSA -alias cas -keystore thekeystore -storepass changeit -validity 9999 -keysize 2048

问题是,当我尝试重新运行ning ./bin/run-cas.sh 时,出现错误:

The Tomcat connector configured to listen on port 8443 failed to start. The port may already be in use or the connector may be misconfigured.

我还需要做些什么才能开始在我的本地计算机上获取 CAS 运行ning 吗?

当您 运行 容器时,它会执行 Dockerfile 中的任何 ENTRYPOINT 或 CMD。 In the case of apero/casCMD ["/cas-overlay/bin/run-cas.sh"]。可能发生的是这个脚本 运行s cas 以某种能力使用端口 8443。

现在,当您 docker exec 进入容器时,您将 运行 在容器中添加一个 额外的 进程。你是一个不同的过程。如果您 ps aux 在容器内,您可以看到我在说什么,您将通过 bash 看到 CMD 运行ning。现在,当您 运行 run-cas.sh 时,它会尝试 运行 使用端口 8443(再次)进行某些操作,但该端口已在容器中分配,因此您会收到错误消息。

试试这个。 docker run -p 80:8080 -p 443:8443 -d --name="cas" apereo/cas:v5.2.2 /bin/bash。当您将 /bin/bash 添加到末尾时,您将覆盖 Dockerfile 中的 CMD,因此第一个 run-cas.sh 不会 运行,并且 8443 不会分配给进程。这在功能上与使用 docker exec 类似,除了您在 运行ning bash 之前 执行初始命令。然后你应该能够做所有你想做的事情(我对cas一无所知)而没有这个端口8443错误。