我正在拉一個 docker 鏡像,它有一個在 Tomcat 8.5 基礎鏡像上運行的應用程式。我想公開一個不同的埠(8080 已經在 docker 機器上使用)并使用 docker 機器的 DHCP 名稱來處理請求。我使用 docker compose 部署服務,如下所示:
services:
erddap-server:
image: axiom/docker-erddap # Based off of Tomcat 8.5'ish
container_name: erddap-server
ports:
- 8081:8080
environment:
- ERDDAP_MIN_MEMORY=1G
- ERDDAP_MAX_MEMORY=2G
env_file:
- .env
restart: unless-stopped
當我導航到http://my-docker-server.com:8081/my_app 時,它作業正常。如果我然后單擊應用程式中的鏈接,它會自動將我重定向到http://localhost:8080/my_app/my_link,該鏈接失敗,因為它指向錯誤的機器。
關于改變什么的任何想法?必須有一種方法來指定主機名/基本 url/根 url 或它實際呼叫的任何內容,但我找不到它。如果有一種方法可以通過 env 變數進行配置,那么這將是一等獎。
澄清:查看 server.xml 組態檔中是否有任何提及“localhost”或“8080”的內容:
Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
<Connector server="Apache" secure="true" port="8080" protocol="HTTP/1.1"
port="8080" protocol="HTTP/1.1"
和
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
<Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
certificateFile="conf/localhost-rsa-cert.pem"
certificateChainFile="conf/localhost-rsa-chain.pem"
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"
prefix="localhost_access_log" suffix=".txt"
uj5u.com熱心網友回復:
這是 erddap 應用程式特定的問題。/usr/local/tomcat/content/erddap/setup.xml 檔案中的 <base_url> 項需要更改以反映機器/容器名稱。它設定為默認為 localhost:8080。
就我而言,我將其更改為:
<baseUrl>http://my-docker-server.com:8081</baseUrl>
然后將其用作 docker 系結安裝:
volumes:
- erddap-data:/erddapData
- ./my_erddap_setup.xml:/usr/local/tomcat/content/erddap/setup.xml
更好的解決方案是讓它完全由 .env vars 配置,但這有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/316737.html
標籤:码头工人 公猫 docker-compose
