本文旨在将Abp项目部署到Docker容器中,借助Gitee存储,Jenkins持续构建,利用Docker Compose生成镜像、启动镜像,在官网给定的Abp项目中,虽然用到了Dockerfile、Docker Compose,但是没有资料指明该如何使用这两个文件,借此我通过改造这两个文件来完成Abp部署任务。

一、前期准备工作

  1、把从Abp官网下载下来的项目(我这取名为Surround方便讲解)修改成以下项目路径结构:

  

  其中的docker文件夹中加入Docker Compose项目,点击具体项目(如ABP中的Web.Mvc)右键添加菜单中的容器业务流程协助程序支持,将出现一个docker compose项目,对于整个docker compose项目的路径按照约定设计。

  

  2、处理docker compose中的脚本配置,在docker-compose.yaml中指定两个服务相关信息,镜像名称、dockerfile的路径地址,此处在build中指定context为本目录的上级目录,按照上图中的位置就是在/xxx项目这一级,然后指定dockerfile的路径为src/Surround.Web.Host/Dockerfile指明具体的Dockerfle路径,同样对于surroundmvc同样如此处理。

version: '3.4'

services:
surroundhost:
image: ${DOCKER_REGISTRY}surroundhost
build:
context: ../
dockerfile: src/Surround.Web.Host/Dockerfile
surroundmvc:
image: ${DOCKER_REGISTRY}surroundmvc
build:
context: ../
dockerfile: src/Surround.Web.Mvc/Dockerfile

  对于docker-compose.override.yaml文件,这是对前一个文件的补充,docker compose会将两个文件进行合并,在此文件中指定环境变量和对外端口此处docker compose设置的端口优先级高于dockerfile设置的端口,此处设置后dockerfile的端口则失效,此处设置内部端口为80端口,外部端口随机获取一个,如果想固定端口,则可以写 - "32100:80" 那么外部端口便固定为32100。

version: '3.4'

services:
surroundhost:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "80"
surroundmvc:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "80"

  3、选中Surround.Web.Mvc点击右键选中添加,加入新的dockerfile文件,不再使用已有的dockerfile文件,同时建议修改dockerfile中的指定端口为80端口,这样就促成了约定所有的新项目加入进来容器内部都使用80端口,如有需要另改即可,同样对Surround.Web.Host也执行这样的操作。 

  

  4、需要注释Surround.Web.Host中的该部分配置:

  

  该部分配置用于Swagger文档的根目录位置,但是如果不注释掉Web.Host中的ServerRootAddress将会引起,由于外部端口与此处指定的端口不一致导致。

  

  5、在Jenkins中新建项目并编写脚本

  如需查看Jenkins的安装过程可以查看https://www.cnblogs.com/CKExp/p/9536864.html,这里不再陈述,

  在另一篇https://www.cnblogs.com/CKExp/p/9940479.html,讲解了Surround在Jenkins中新建项目的过程,可以直接使用。

  本次执行完毕,之后有新代码提交,将会自动构建,如果需要指定对外端口,可以在docker-compose.override.yaml文档中指定外部端口,如果不指定,则每次生成后都是使用的随机端口,

二、部署完毕查看效果

  构建完毕可以通过脚本查看docker ps -a,查看容器已经生成并已经处于运行中了。

  

  通过服务器地址:外部端口的形式可以直接访问查看。

  

  

  至此,abp部署在docker中算是完成了,主要是修改了原有abp项目中的docker compose文件和dockerfile文件。

  本文地址: https://www.cnblogs.com/CKExp/p/9765907.html

  欢迎关注微信订阅号,有新的文章将同步到订阅号中

  

2018-11-11,望技术有成后能回来看见自己的脚步

把ABP框架部署到Docker中的更多相关文章

  1. .net core Ocelot实现API网关并部署在docker中

    基于Ocelot(http://ocelot.readthedocs.io)搭建的API网关demo 软件以及系统版本:  Asp.Net Core 2.2 Ocelot 13.5.0 CentOS ...

  2. Asp.Net Core WebAPI+PostgreSQL部署在Docker中

     PostgreSQL是一个功能强大的开源数据库系统.它支持了大多数的SQL:2008标准的数据类型,包括整型.数值值.布尔型.字节型.字符型.日期型.时间间隔型和时间型,它也支持存储二进制的大对像, ...

  3. nopCommerce 3.9 大波浪系列 之 使用部署在Docker中的Redis缓存主从服务

    一.概述 nop支持Redis作为缓存,Redis出众的性能在企业中得到了广泛的应用.Redis支持主从复制,HA,集群. 一般来说,只有一台Redis是不可行的,原因如下: 单台Redis服务器会发 ...

  4. .NET Core Web 应用部署到 Docker 中运行

    环境介绍 : 虚拟机:VirtualBox 5.1.6 系 统:Ubuntu 16.04.1 LTS 系统准备完成后可以使用 sudo apt-get udpate 和 sudo apt-get up ...

  5. abp框架angular 项目docker 手动部署到Linux环境中

    1.https://aspnetboilerplate.com/Templates 2.后端项目发布,在publish中abp默认已经存在DockerFile文件 3.修改后端文件中的DockerFi ...

  6. [Linux之旅一] .NET Core 2.2部署到Docker中

    第一步,使用VS2017或者VS2019创建.NET Core 2.2或3.1的项目,如下图: 在创建项目的时候记得勾选Docker支持,这样会自动创建Dockerfile文件,这个文件用于构建Doc ...

  7. vue项目部署到docker中

    通过nginx镜像部署 vue项目npm run build打包成dist目录,有的打包会加上版本号 启动 docker 将dist目录通过xftp拷贝到linux服务器上,同目录下新建Dockerf ...

  8. Windows下docker的安装,将ASP.NET Core程序部署在docker中

    参考文章: https://www.cnblogs.com/jRoger/p/aspnet-core-deploy-to-docker.html https://www.cnblogs.com/jRo ...

  9. Docker中部署Kubernetes

    Kubernetes为Google开源的容器管理框架,提供了Docker容器的夸主机.集群管理.容器部署.高可用.弹性伸缩等一系列功能:Kubernetes的设计目标包括使容器集群任意时刻都处于用户期 ...

随机推荐

  1. django(权限、认证)系统——自定义UserProfile储存User额外信息

    上篇文章我们引出了Django内置的权限控制系统,讲了安装,和最核心和基本的User模型的API和其Manager的API. 接下来我们继续深入下去,使用User对象做一些事情,首先当然就是创建一个U ...

  2. substr函数的用法

    敲了几个demo,结果如下 substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('1234567890',0,5) :返回结果为 '12345' *从字符串第一个字符开始截 ...

  3. DIV水平垂直布局

    <%@ page language="java" pageEncoding="utf-8" import="java.util.*,com.ta ...

  4. BZOJ_1098_[POI2007]办公楼biu_链表优化BFS

    BZOJ_1098_[POI2007]办公楼biu_链表优化BFS Description FGD开办了一家电话公司.他雇用了N个职员,给了每个职员一部手机.每个职员的手机里都存储有一些同事的 电话号 ...

  5. Appium+python的环境搭建!

    我的电脑64位操作系统 下载并安装所需软件: 1.adb环境 2.下载(python-2.7.12.amd64.msi)并安装python 3.下载并解压adt,如(adt-bundle-window ...

  6. Hi,给他介绍一款markdown的帮助文档生成器

    当今大多数的团队都实现了前.后端分支.前端与后端的沟通都是通过接口来实现的(一般情况下都是webapi接口).这种情况你肯定需要一个接口查询的帮助文档,这个当然用swagger都可以实现.但做为前端开 ...

  7. uni-app实现顶部导航栏显示按钮+搜索框

    最近公司准备做app,最终决定使用uni-app框架开发,但是当把设计图给我的时候我心里有点没底,因为他的设计图顶部长成这个样子: 因为这个功能在小程序是根本无法实现的,可能受这个影响,我感觉好像实现 ...

  8. token:NLP之词形还原

    已迁移到我新博客,阅读体验更佳token:NLP之词形还原 完整代码实现放在我的github上:click me 一.任务描述 形态还原算法: 输入一个单词 如果词典里有该词,输出该词及其属性,转4, ...

  9. clang如何获得程序控制流图

    在低版本的clag中,可以直接clang -cc1 -analyze -cfg-dump 1.c来获得程序控制流图,但较高版本后就不行了 另外clang -cc1默认仅限当前目录,所以会出现fata ...

  10. C#动态调用泛型类、泛型方法

    在制作一个批量序列化工具时遇到了如下问题,在此记录一下,仅供参考. 主程序加载另一个程序集,将其中的所有类取出,然后对这些类分别调用泛型类或泛型方法.控制台程序解决方案如下: Main工程:提供Wor ...