从Dockerfile永久更改tomcat端口

问题描述 投票:0回答:1

我想在k8s吊舱内运行两个容器。

  1. tomcat导出器(在端口8080上运行)
  2. tomcat应用程序(也在端口8080上运行)

由于Pod内的多个运行中的容器不能共享同一端口,所以我希望使用不同的端口(例如9090(默认的tomcat端口为:8080))构建自定义的tomcat映像。

这是我使用的Dockerfile。

cat Dockerfile 
FROM tomcat:9.0.34
RUN sed -i 's/8080/9090/' /usr/local/tomcat/conf/server.xml
EXPOSE 9090

构建该映像并运行容器后,我看到已经分配了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

我想知道这个8080 / tcp端口是从哪里来的,即使在server.xml文件中将所有8080的引用更改为9090之后,也是如此

任何想法都值得赞赏。

docker tomcat kubernetes dockerfile tomcat9
1个回答
0
投票

检查tomcat:9.0.34 Dockerfile in Dockerhub,我们可以看到它正在暴露端口8080。当您将此图像用作父图像时,会从该图像继承EXPOSE指令。

通过the documentation搜索,似乎在Dockerfile中不存在“ unexpose”指令来撤消父映像的EXPOSE 8080指令。

这应该不会引起任何问题,但是如果您想消除它,您可以分叉tomcat Dockerfile,删除EXPOSE指令并构建自己的tomcat映像。

© www.soinside.com 2019 - 2024. All rights reserved.