首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Grails 應用端口衝突解決方案:application.yml 配置、命令行參數、多環境切換

     編輯:Java 相關知識

前言

Grails 內建 Tomcat 預設端口 8080,常與其他服務衝突。本文提供配置檔、啟動參數、環境區隔三種解決方式。

1. application.yml 靜態配置

# grails-app/conf/application.yml
server:
    port: 8081  # 修改為任意可用端口

# 或針對特定環境
environments:
    development:
        server:
            port: 8081
    production:
        server:
            port: 80
            address: 0.0.0.0

2. 命令行動態覆蓋

# 臨時指定端口啟動
./gradlew bootRun --args='--server.port=9090'

# 或打包後
java -jar myapp.jar --server.port=9090

3. 環境變數注入 (Docker/K8s 友好)

# Dockerfile
ENV SERVER_PORT=8080
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]

# docker run -e SERVER_PORT=9090 -p 9090:9090 myimage

4. 程式化配置 (稀有需求)

@Configuration
public class TomcatConfig {
    @Bean
    public TomcatServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.setPort(8081);
        factory.setContextPath("/myapp");
        return factory;
    }
}

5. 多實例部署避坑

  • Shutdown Port 衝突:Tomcat 預設關閉端口 8005,多實例需配置 server.shutdown=customPort (Spring Boot 2.5+) 或 server.tomcat.shutdown-port。
  • AJP 端口:若啟用 AJP,server.tomcat.ajp.port 也需區分。
  • 健康檢查端點:management.server.port 獨立管理端口,避免業務端口暴露。

6. 驗證端口生效

# 應用啟動日誌
Tomcat started on port(s): 8081 (http) with context path '/myapp'

# 系統層面確認
netstat -tlnp | grep 8081
ss -tlnp | grep 8081
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved