Docker 发布 Abp net core web 服务

  1. 准备工作:Abp 项目,这个是模板下载地址 https://aspnetboilerplate.com/Templates (本例使用的是Single Page Web Application)

  2. 安装docker :参考:http://www.runoob.com/docker/windows-docker-install.html

    1.   安装成功后注册docker 账号 
  3. 创建数据库容器参考:https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker?view=sql-server-2017&pivots=cs1-bash
    1. 执行命令: docker pull mcr.microsoft.com/mssql/server:2017-latest  拉取映像

    2. 执行命令创建映像容器:docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=<填写一个账号密码'> -p <本机端口>:<服务器端口> --name sql1 -d mcr.microsoft.com/mssql/server:2017-latest           
    3. 注意:<> 括号内是你要替换的内容, - p 后面两个端口的作用是将容器内的端口映射到本地端口,例如:映像中的mssql 的端口是1433,映射到本地的8099 就是:-p 6900:1433
    4. 测试一下,用 vs 连接docker 上的mssql 
  4. 对容器内的数据库经行数据库迁移
    1. 更改Abp 项目 AbpCompanyName.AbpProjectName.Migrator 下的appsetting.json 中的连接字符串为,你创建容器的连接  "Data Source=<本机ip>,<docker 映射的端口>;Initial Catalog=<你创建的数据库>;User ID=sa;Password=<你的数据库密码>"
    2. 替换数据库连接后运行程序经行迁移
  5. 发布web 
    1. 在host 项目下创建 Dockerfile  注意将 AbpCompanyName.AbpProjectName.Web.Host.dll 替换成你启动的程序集名称.dll

      FROM microsoft/dotnet:latest
      
      COPY . /app
      
      WORKDIR /app
      
      EXPOSE /tcp
      
      ENTRYPOINT ["dotnet", "AbpCompanyName.AbpProjectName.Web.Host.dll"]
    2. 设置 Dockerfile 生成方式
    3. 发布代码 
    4. 构建映像 ,在发布目录下运行命令: docker build -t 映像名称  .     这里注意结尾不要漏了空格跟“.“
    5. 创建并运行容器
    6. 执行命令: docker run -it -p <本地端口>:<容器端口> <映像名称>

      执行后可以看出,程序默认绑定容器的80端口,因此我们需要在本地上访问容器内的web,我们必须设置映像端口为80(根据实际情况绑定端口)

      本例子中上面创建了myabp/demo容器,且程序运行的端口为80,因此我想在本机上8078端口访问服务命令就是: docker run -it -p 8078:80 myabp/demo

    7. 浏览网址:http://localhost:8078/swagger/index.html 结果如下 ,powerShell 可以直接关掉,服务会继续挂在docker 上面
    8. 用vscode 打开vue 项目修改  vue/src/lib/url.ts  修改url 为我们docker 上发布的服务地址
    9. 命令终端在 vue 目录下运行 npm run serve

      点开浏览地址可以看到前端已经请求docker 上的服务地址,默认账号 admin 密码123qwe

    10. 如果有需要的同学可以允许npm rum build  打包前端代码再发布到docker 或者IIS上面都可以,

    如果前端访问失败,有可能是服务上没有添加跨域配置哦~

    

         

最新文章

  1. logback 配置详解(二)——appender
  2. SSH配置免密码登陆
  3. BZOJ1018 [SHOI2008]堵塞的交通traffic
  4. OC-ARC
  5. Vim 学习资料
  6. QTP之delphi试用感想一(自动化测试)
  7. Free Sql Server SMSS format Plugin
  8. Android KitKat 4.4 Wifi移植之Wifi driver
  9. C# 语言规范_版本5.0 (第3章 基本概念)
  10. iOS 集成Weex入门教程
  11. C++中的继承详解(3)作用域与重定义,赋值兼容规则
  12. 开源框架是如何通过JMX来做监控的(一) - JMX简介和Standard MBean
  13. iOS-Xcode编码自动补全失效
  14. ehcache的基本使用及Spring整合
  15. 《万能数据库查询分析器》实现使用SQL语句直接高效地访问文本文件
  16. vuejs小白入门
  17. [matlab] 3.矩阵
  18. uva11183 最小树形图模板题
  19. Android: 待机时如何让程序继续运行 extends Service
  20. ALGO-17_蓝桥杯_算法训练_乘积最大(DP)

热门文章

  1. Python并发编程的几篇文章
  2. MongoDB使用过程中的一些问题
  3. HashMap原理浅析
  4. 30岁天才上班族利用Python人脸监控BOSS,伪装成认真上班的样子!
  5. CSS学习笔记2:伪类
  6. JavaBean转JSON方式
  7. Java单例模式(Singleton)以及实现
  8. 2、前端学习笔记之——css
  9. linux 文件传输 SCP
  10. Java反射-修改private final成员变量值,你知道多少?