# dotnet 8 container expose port ## dotnet 7 (含) 以下的 expose 設定 ```dockerfile FROM mcr.microsoft.com/dotnet/aspnet:7.0-bookworm-slim AS base WORKDIR /app EXPOSE 80 EXPOSE 443 ``` ## dotnet 8 以後的 expose 設定 ### 方案一:配合官方異動,改成 expose 8080,並調整 docker run 與 k8s 中的網路設定 - dockerfile ```dockerfile FROM mcr.microsoft.com/dotnet/aspnet:8.0-bookworm-slim AS base WORKDIR /app EXPOSE 8080 EXPOSE 443 ``` - docker run ```shell docker run -d -p {your port}:8080 --name sample-webservice -e ASPNETCORE_ENVIRONMENT=Test {image} ``` - k8s resource - service ```yaml apiVersion: v1 kind: Service spec: ports: - name: http port: 8080 protocol: TCP targetPort: 8080 # 這個欄位對應容器的 expose,升級 dotnet 8 後,這個欄位會從 80 異動成 8080 ``` - deployment ```yaml apiVersion: app/v1 kind: Deployment spec: template: spec: containers: - name: "sample-webservice" env: - name: ASPNETCORE_ENVIRONMENT value: Test ports: - name: http containerPort: 8080 # 這個欄位對應容器的 expose,整個部署設定中,只應該有這個欄位從 80 異動成 8080 protocol: TCP ``` ### 方案二:維持現有 expose,但是調整部署時的執行設定 (加上環境參數指定 port) - Dockerfile ```dockerfile FROM mcr.microsoft.com/dotnet/aspnet:8.0-bookworm-slim AS base WORKDIR /app EXPOSE 80 EXPOSE 443 ``` - docker run ```shell docker run -d -p {service excepose port}:80 --name sample-webservice -e ASPNETCORE_ENVIRONMENT=Test -e ASPNETCORE_HTTP_PORTS=80 {image} ``` - k8s resource - deployment ```yaml apiVersion: app/v1 kind: Deployment spec: template: spec: containers: - name: "sample-webservice" env: - name: ASPNETCORE_ENVIRONMENT value: Test # 下面 ASPNETCORE_HTTP_PORTS 的環境參數是用於指定服務啟動時,告知 .net 服務要使用哪個 port 作為進入的 port - name: ASPNETCORE_HTTP_PORTS value: "80" ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up