新建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. MR1和MR2(Yarn)工作原理流程

    一.Mapreduce1 图1  MR1工作原理图 工作流程主要分为以下6个步骤: 1 作业的提交 1)客户端向jobtracker请求一个新的作业ID(通过JobTracker的getNewJobI ...

  2. Ex 2_5 求解递推式..._第三次作业

  3. CentOS7.5从零安装Python3.6.6

    ps:环境如标题 安装可能需要的依赖 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlit ...

  4. Python-爬虫-租房Ziroom

    目标站点需求分析 涉及的库 import requestsimport timeimport pymongofrom lxml import etreefrom requests.exceptions ...

  5. 洛谷P3247 [HNOI2016]最小公倍数 [分块,并查集]

    洛谷 思路 显然,为了达到这个最小公倍数,只能走\(a,b\)不是很大的边. 即,当前询问的是\(A,B\),那么我们只能走\(a\leq A,b\leq B\)的边. 然而,为了达到这最小公倍数,又 ...

  6. xampp 搭建好本地服务器以后手机无法访问

    转载地址:https://blog.csdn.net/weixin_35773751/article/details/80076492 解决办法: 1.将网络连接修改为工作网络,然后关闭工作局域网的防 ...

  7. 关于deepin linux15.6-15.9.1系统播放视频卡顿解决办法

    关于deepin linux15.6-15.9.1系统播放视频卡顿解决办法 chrome浏览器 关闭chrome硬件加速模式 设置>高级>使用硬件加速模式 注释:由于视频卡顿是因显卡驱动问 ...

  8. nginx官方模块之http_random_index_module

    作用 目录中选择一个随机主页 语法

  9. Android源码分析一 Android系统架构

    一 Android系统架构 Linux内核层(Linux Kernel):Android系统基于Linux2.6内核,这一层为Android设备各种硬件提供了底层驱动,如显示驱动.音频驱动.照相机驱动 ...

  10. Python1 简介及安装、基础

    Python介绍 Python是面向对象,高级语言,解释,动态和多用途编程语言.Python易于学习,而且功能强大,功能多样的脚本语言使其对应用程序开发具有吸引力. Python的语法和动态类型具有其 ...