1. 程式人生 > >記用vs調式docker環境下web程式的一處坑

記用vs調式docker環境下web程式的一處坑

若選擇web專案支援https,此時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

 

80和443兩個預設埠都可以通過Dockerfile進行修改,如:

ENV ASPNETCORE_URLS http://+:81

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

 EXPOSE 跟著改。

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

 

 

 

Production部分

啟用https時docker-compose.override.yml檔案為

aspnetcore環境變數修改為非Development時,若無證書,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 挺方便的