Навсегда изменить порт Tomcat из Dockerfile - PullRequest
0 голосов
/ 11 апреля 2020

Я хочу запустить два контейнера внутри контейнера k8s.

  1. экспортер tomcat (который работает на порту 8080)
  2. приложение tomcat (которое также работает на порту 8080)

как несколько работающих контейнеров внутри 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

После создания этого образа и запуска контейнера я вижу, что порт 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, даже после того, как я изменил все ссылки с 8080 на 9090 на сервере. xml file

Любые мысли ценятся.

1 Ответ

0 голосов
/ 12 апреля 2020

Проверяя tomcat:9.0.34 Dockerfile в Dockerhub , мы видим, что он открывает порт 8080. Когда вы используете это изображение в качестве родительского, происходит то, что вы наследуете EXPOSE инструкцию от этого изображения.

При поиске документации , кажется, что "не существует" «раскрытие» в Dockerfile, чтобы отменить инструкцию EXPOSE 8080 родительского образа.

Это не должно вызывать каких-либо проблем, но если вы хотите устранить их, вы можете разветвить файл Dockerfile для Tomcat, удалить инструкцию EXPOSE и создать свой собственный образ Tomcat.

...