san*_*thu 4 tomcat docker kubernetes dockerfile tomcat9
我想在 k8s pod 内运行两个容器。
由于 Pod 内的多个正在运行的容器无法共享相同的端口,因此我期待使用不同的端口构建自定义 tomcat 映像(例如 9090(默认 tomcat 端口为:8080))
这就是我使用的 Dockerfile。
cat Dockerfile
FROM tomcat:9.0.34
RUN sed -i 's/8080/9090/' /usr/local/tomcat/conf/server.xml
EXPOSE 9090
Run Code Online (Sandbox Code Playgroud)
构建该映像并运行容器后,我看到 9090 端口已被分配,但我也看到 8080 仍然存在。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b66e1e9c3db8 chakilams3/tomcatchangedport:v1 "catalina.sh run" 3 seconds ago Up 2 seconds 8080/tcp, 0.0.0.0:9090->9090/tcp test
Run Code Online (Sandbox Code Playgroud)
我想知道这个 8080/tcp 端口从哪里来,即使我已经将 server.xml 文件中 8080 的所有引用更改为 9090
任何想法表示赞赏。
经过一番努力,我找到了更改tomcat容器内部端口的解决方案
我的 Dockerfile 是
FROM tomcat:7.0.107
RUN sed -i 's/port="8080"/port="4287"/' ${CATALINA_HOME}/conf/server.xml
ADD ./tomcat-cas/war/ ${CATALINA_HOME}/webapps/
CMD ["catalina.sh", "run"]
Run Code Online (Sandbox Code Playgroud)
除非您想最初部署一些 war 文件,否则这里
ADD ./tomcat-cas/war/ ${CATALINA_HOME}/webapps/部分不是必需的。而且我也不添加EXPOSE 4287,因为如果我这样做,tomcat服务器不会绑定到端口4287,那么它总是绑定到8080默认端口。
只需构建镜像并运行
docker build -f Dockerfile -t test/tomcat-test:1.0 .
docker run -d -p 4287:4287 --name tomcat-test test/tomcat-test:1.0
| 归档时间: |
|
| 查看次数: |
9945 次 |
| 最近记录: |