カスタム Tomcat ポートを設定する Docker イメージを作成しようとしています (Docker フラグ「-p 8888:8080」を使用して外部ポートを設定できることはわかっていますが、私のユース ケースでは内部ポートも変更したいと考えています)。 .
catalina.sh を起動しようとすると、実行引数が何らかの理由で無視されます。
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" />
開始-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
ここで単純なものが欠けていると確信しています。構文と関係があると思いますが、私が気付いていないdockerまたはalpineと関係があるかもしれません。アルパイン Linux を使用するのはこれが初めてです。
---編集1---
私のユースケースを説明するには... Dockerイメージが作成された後にポートを設定しています。これは、apache mesosタスクによって設定されているためです。私の目的のために、ブリッジ モードではなく、ホスト モードで (マラソンから) docker コンテナーを実行する必要があります。
---編集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
まだ運がありません。