新建web项目,此时launchSettings.json文件为:

"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:54372",
"sslPort":
}
此时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 挺方便的

用vs调式docker环境下web程序的一处坑的更多相关文章

  1. 如何在 Docker 环境下自动给 .NET 程序生成 Dump

    前言 之前"一线码农"大佬有写文章介绍了如何在 windows 下自动 dump,正好手里有个在 docker 环境下 dump 的需求,所以在参考大佬文章的基础上,有了本篇. ​ ...

  2. Docker环境下的Mysql8 实现主从数据库数据同步方案

    本文记录下通过MySQL Replication在Docker环境下,通过多个容器 实现数据库主从配置. MySQL Replication就不多解释了,简单说就是MySQL非常出色的一个功能,该功能 ...

  3. docker环境下solr6.0配置(中文分词+拼音)

    前言:这篇文章是基于之前的“linux环境下配置solr5.3详细步骤”(http://www.cnblogs.com/zhangyuan0532/p/4826740.html)进行扩展的.本篇的步骤 ...

  4. docker环境下solrcloud+zookeeper集群部署教程

    前言:两个月前的16年11月份完成的配置,使用的solr6.1和zookeeper3.4,刚刚写成blog,目前版本可能有小版本的变化. 本例完成结果为:在docker环境下部署solrcloud集群 ...

  5. Mac+Docker环境下xdebug的配置

    由于容器化的需要,前几天我本地也换成了docker环境.就研究了一下docker环境下phpstorm和xdebug的配置. http://www.mmfei.com/?p=453 这个博客给出了一个 ...

  6. Elasticsearch Docker环境下安装

    Elasticsearch Docker环境下安装 Daemon镜像配置的是https://registry.docker-cn.com Linux:vi /etc/docker/daemon.jso ...

  7. docker环境下mysql参数修改

    原文:docker环境下mysql参数修改 需要修改log_bin为on,看了好几个博客说都需要删掉容器重新生成,然而并非如此, 我们可以用docker cp 命令将docker的文件"下载 ...

  8. Docker环境下Java应用的最大内存和堆内存的设置

    Docker环境下Java应用的最大内存和堆内存的设置 1.  设置应用允许使用的最大内存 通过docker run(创建一个新的容器并运行)命令中设置-m来进行设置.案例如下所示. docker r ...

  9. Docker环境下运行python+selenium+chrome

    Docker环境下运行python+selenium+chrome docker运行时占用的资源非常少,而且能将环境进行有效的隔离,可以快速的进行部署,因此可以将docker与selenium结合实现 ...

随机推荐

  1. 基于注解的Dubbo服务配置

      基于注解的Dubbo服务配置可以大大减少dubbo xml配置文件中的Service配置量,主要步骤如下:   一.服务提供方   1. Dubbo配置文件中增加Dubbo注解扫描 <!-- ...

  2. 重启报错:Failed to open /dev/initctl: No such device or address

    [root@WEB-APP-REP-MASTER ~]# rebootError getting authority: Error initializing authority: Error call ...

  3. python-面向对象(绑定方法与非绑定方法)

    一.绑定方法: 绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数传入 1.绑定给对象的方法:类中定义的函数默认就是绑定给对象的,自动将对象当作第一个参数传入,类也可以调用,但是不会自动传值 2 ...

  4. ie.360,qq浏览器这种ie内核浏览器默认阻止弹窗

  5. SpringMvc + Jsp+ 富文本 kindeditor 进行 图片ftp上传nginx服务器 实现

    一:html 原生态的附件上传 二:实现逻辑分析: 1.1.1 需求分析 Common.js 1.绑定事件 2.初始化参数 3.上传图片的url: /pic/upload 4.上图片参数名称: upl ...

  6. Confluence 6 缓存性能示例

    有关 Confluence 的缓存性能如何设置,让我们看看下面的表: 缓存(Caches) % 使用的缓存(Used) % 有效率(Effectiveness) 对象/大小(Objects/Size) ...

  7. 在 Confluence 6 中禁用 workbox 应用通知

    如果你选择 不提供应用通知(does not provide in-app notifications): Confluence workbox 图标将不会可见同时用户也不能在这个服务器上访问 wor ...

  8. 1709: Fire or Retreat(zzuli)

    水题,哎,可是第一次是因为编译错了,vs不知咋了,无奈: 后面几次又因为类型用了int错了,痛苦: 题目描述 在与科技水平远胜于我们的外星人的战斗最后,我们能够用来对外星装甲造成伤害的武器只剩下了…… ...

  9. vue指令

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>指令 ...

  10. mysql 语句的使用清库数据转移

    mysql清空数据库表 方法1:重建库和表用mysqldump --no-data把建表SQL导出来,然后drop database再create database,执行一下导出的SQL文件: 方法2 ...