Я пытаюсь создать образ докера, который устанавливает собственный порт tomcat (я знаю, что вы можете установить внешний порт с помощью флага докера «-p 8888: 8080», но для моего случая использования я также хочу изменить внутренний порт) .
Когда я пытаюсь запустить catalina.sh, аргумент run по какой-то причине игнорируется.
Dockerfile:
# Tomcat 8 alpine dockerfile copied here (URL below)... minus the CMD line at the end
# https://github.com/docker-library/tomcat/blob/5f1abae99c0b1ebbd4f020bc4b5696619d948cfd/8.0/jre8-alpine/Dockerfile
ADD server.xml $CATALINA_HOME/conf/server.xml
ADD start-tomcat.sh /start-tomcat.sh
RUN chmod +x /start-tomcat.sh
ENTRYPOINT ["/bin/sh","/start-tomcat.sh"]
Файл tomcat, server.xml, такой же, как файл по умолчанию, за исключением строки:
<Connector port="${port.http.nonssl}" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
start-tomcat.sh:
#!/bin/sh
export JAVA_OPTS=-Dport.http.nonssl=${PORT}
catalina.sh run
Образ создается успешно, но когда я запускаю с
docker run -p 8888:8888 -e PORT=8888 customtomcat
Я просто получаю список команд catalina.sh, как будто не аргументировал это. Я также пробовал
/usr/local/tomcat/bin/catalina.sh run
sh -c "catalina.sh run"
sh -c "/usr/local/tomcat/bin/catalina.sh run"
cd /usr/local/tomcat/bin
./catalina.sh run
Я почти уверен, что мне здесь не хватает чего-то простого. Я предполагаю, что это как-то связано с синтаксисом, но, возможно, это как-то связано с докером или alpine, о которых я не знаю. Я впервые использую alpine linux.
--- Редактировать 1 ---
Чтобы объяснить мой вариант использования ... Я устанавливаю ПОРТ после создания образа докера, потому что он задается задачей apache mesos. Для моих целей мне нужно запустить контейнер докеров (из марафона) в режиме хоста, а не в режиме моста.
--- Редактировать 2 ---
Я изменил вещи, чтобы сосредоточиться только на своей основной проблеме. Теперь в конец файла docker добавлено только следующее:
ADD start-tomcat.sh /start-tomcat.sh
RUN chmod +x /start-tomcat.sh
ENTRYPOINT ["/bin/sh","/start-tomcat.sh"]
И start-tomcat.sh:
#!/bin/bash
catalina.sh run
По-прежнему не повезло.