用vs調試docker環境下web程序的一處坑


新建web項目,此時launchSettings.json文件為:

"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:54372",
"sslPort": 54373
}
此時sslPort不為0(開啟https時)
http和https兩種協議的端口都固定
Dockerfile文件中可以不暴露端口(EXPOSE可以不設置),如:
#EXPOSE 80
#EXPOSE 443


sslPort修改為0(關閉https時)坑出現了
每次重新編譯程序端口號會遞增,無法固定。
Dockerfile文件中必須暴露端口,如:
EXPOSE 80

 

 

結論:docker調式時,不能把web項目launchSettings.json中的sslPort設置為0來關閉https,這樣會使端口變成不可控。

 

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------

 發布時,必須設置EXPOSE

80和443兩個默認端口都可以通過Dockerfile進行修改,EXPOSE 跟着改,如:

ENV ASPNETCORE_URLS http://+:81
EXPOSE 81

ENV ASPNETCORE_URLS http://+:81,https://+:444
EXPOSE 81
EXPOSE 444

 

另:vs+docker啟動環境下,多種方式修改配置,環境變量始終為Development,代碼內修改除外。

 

 

 

Production部分

啟用https時docker-compose.override.yml文件為

aspnetcore環境變量修改為非Development時,因為代碼中加入了app.UseHsts();且配置文件(用戶機密)中無類似"Kestrel:Certificates:Development:Password": "7de8c379-3703-4683-9d33-fafd9540743c"的配置,若無證書,docker-compose啟動會報錯

此時內容為:

version: '3.4'

services:
  dockerlinuxdemo.web:
    restart: always
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ASPNETCORE_HTTPS_PORT=38112
    ports:
      - "38111:80"
      - "38112:443"
    volumes:
      - ./DockerLinuxDemo.Web/bin/Release/netcoreapp2.1/publish:/app
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro

不啟用https時修改ASPNETCORE_URLS即可,ASPNETCORE_HTTPS_PORT和ports並不影響:

version: '3.4'

services:
  dockerlinuxdemo.web:
    restart: always
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
      - ASPNETCORE_URLS=http://+:80
      - ASPNETCORE_HTTPS_PORT=38112
    ports:
      - "38111:80"
      - "38112:443"
    volumes:
      - ./DockerLinuxDemo.Web/bin/Release/netcoreapp2.1/publish:/app
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro

 docker-compose up --build -d 挺方便的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM