Docker部署Tomcat服务时如何修改基础URL解决跳转错误问题
问题解决方法
根因说明
应用内跳转链接错误是因为Tomcat与ERDDAP默认使用容器内部的localhost:8080生成站内绝对路径,不知道外部实际访问的域名和端口。
优先方案:通过环境变量配置(无需修改配置文件)
你使用的axiom/docker-erddap镜像原生支持通过环境变量指定基础访问地址,直接修改docker-compose.yml的environment节点添加配置即可:
services: erddap-server: image: axiom/docker-erddap container_name: erddap-server ports: - 8081:8080 environment: - ERDDAP_MIN_MEMORY=1G - ERDDAP_MAX_MEMORY=2G # 新增以下配置,填写你实际的外部访问根地址 - ERDDAP_BASE_URL=http://my-docker-server.com:8081/my_app/ env_file: - .env restart: unless-stopped
修改后重新执行docker compose up -d重启容器即可生效,所有站内链接会自动使用你配置的根地址生成。
备选方案:修改Tomcat配置(环境变量不生效时使用)
如果镜像版本较旧不支持上述环境变量,可以通过修改Tomcat的server.xml配置告知外部访问参数:
- 找到容器内
/usr/local/tomcat/conf/server.xml的8080端口Connector配置,新增proxyName、proxyPort、scheme三个属性:
<Connector server="Apache" port="8080" protocol="HTTP/1.1" proxyName="my-docker-server.com" proxyPort="8081" scheme="http" />
- 将修改后的server.xml挂载到容器内,在docker-compose.yml中新增volumes配置:
volumes: - ./本地修改后的server.xml路径:/usr/local/tomcat/conf/server.xml
- 重启容器即可生效。
注意事项
- 如果后续切换为HTTPS访问,需要将
ERDDAP_BASE_URL的前缀改为https,如果用Tomcat配置方案则要把scheme改为https、proxyPort改为HTTPS对应的外部端口。 - 根地址结尾记得加
/,避免生成链接时出现路径拼接错误。
内容的提问来源于stack exchange,提问作者RedM
相关产品推荐
相关产品推荐

