把ABP框架部署到Docker中
本文旨在将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中的更多相关文章
- .net core Ocelot实现API网关并部署在docker中
基于Ocelot(http://ocelot.readthedocs.io)搭建的API网关demo 软件以及系统版本: Asp.Net Core 2.2 Ocelot 13.5.0 CentOS ...
- Asp.Net Core WebAPI+PostgreSQL部署在Docker中
PostgreSQL是一个功能强大的开源数据库系统.它支持了大多数的SQL:2008标准的数据类型,包括整型.数值值.布尔型.字节型.字符型.日期型.时间间隔型和时间型,它也支持存储二进制的大对像, ...
- nopCommerce 3.9 大波浪系列 之 使用部署在Docker中的Redis缓存主从服务
一.概述 nop支持Redis作为缓存,Redis出众的性能在企业中得到了广泛的应用.Redis支持主从复制,HA,集群. 一般来说,只有一台Redis是不可行的,原因如下: 单台Redis服务器会发 ...
- .NET Core Web 应用部署到 Docker 中运行
环境介绍 : 虚拟机:VirtualBox 5.1.6 系 统:Ubuntu 16.04.1 LTS 系统准备完成后可以使用 sudo apt-get udpate 和 sudo apt-get up ...
- abp框架angular 项目docker 手动部署到Linux环境中
1.https://aspnetboilerplate.com/Templates 2.后端项目发布,在publish中abp默认已经存在DockerFile文件 3.修改后端文件中的DockerFi ...
- [Linux之旅一] .NET Core 2.2部署到Docker中
第一步,使用VS2017或者VS2019创建.NET Core 2.2或3.1的项目,如下图: 在创建项目的时候记得勾选Docker支持,这样会自动创建Dockerfile文件,这个文件用于构建Doc ...
- vue项目部署到docker中
通过nginx镜像部署 vue项目npm run build打包成dist目录,有的打包会加上版本号 启动 docker 将dist目录通过xftp拷贝到linux服务器上,同目录下新建Dockerf ...
- Windows下docker的安装,将ASP.NET Core程序部署在docker中
参考文章: https://www.cnblogs.com/jRoger/p/aspnet-core-deploy-to-docker.html https://www.cnblogs.com/jRo ...
- Docker中部署Kubernetes
Kubernetes为Google开源的容器管理框架,提供了Docker容器的夸主机.集群管理.容器部署.高可用.弹性伸缩等一系列功能:Kubernetes的设计目标包括使容器集群任意时刻都处于用户期 ...
随机推荐
- django(权限、认证)系统——自定义UserProfile储存User额外信息
上篇文章我们引出了Django内置的权限控制系统,讲了安装,和最核心和基本的User模型的API和其Manager的API. 接下来我们继续深入下去,使用User对象做一些事情,首先当然就是创建一个U ...
- substr函数的用法
敲了几个demo,结果如下 substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('1234567890',0,5) :返回结果为 '12345' *从字符串第一个字符开始截 ...
- DIV水平垂直布局
<%@ page language="java" pageEncoding="utf-8" import="java.util.*,com.ta ...
- BZOJ_1098_[POI2007]办公楼biu_链表优化BFS
BZOJ_1098_[POI2007]办公楼biu_链表优化BFS Description FGD开办了一家电话公司.他雇用了N个职员,给了每个职员一部手机.每个职员的手机里都存储有一些同事的 电话号 ...
- Appium+python的环境搭建!
我的电脑64位操作系统 下载并安装所需软件: 1.adb环境 2.下载(python-2.7.12.amd64.msi)并安装python 3.下载并解压adt,如(adt-bundle-window ...
- Hi,给他介绍一款markdown的帮助文档生成器
当今大多数的团队都实现了前.后端分支.前端与后端的沟通都是通过接口来实现的(一般情况下都是webapi接口).这种情况你肯定需要一个接口查询的帮助文档,这个当然用swagger都可以实现.但做为前端开 ...
- uni-app实现顶部导航栏显示按钮+搜索框
最近公司准备做app,最终决定使用uni-app框架开发,但是当把设计图给我的时候我心里有点没底,因为他的设计图顶部长成这个样子: 因为这个功能在小程序是根本无法实现的,可能受这个影响,我感觉好像实现 ...
- token:NLP之词形还原
已迁移到我新博客,阅读体验更佳token:NLP之词形还原 完整代码实现放在我的github上:click me 一.任务描述 形态还原算法: 输入一个单词 如果词典里有该词,输出该词及其属性,转4, ...
- clang如何获得程序控制流图
在低版本的clag中,可以直接clang -cc1 -analyze -cfg-dump 1.c来获得程序控制流图,但较高版本后就不行了 另外clang -cc1默认仅限当前目录,所以会出现fata ...
- C#动态调用泛型类、泛型方法
在制作一个批量序列化工具时遇到了如下问题,在此记录一下,仅供参考. 主程序加载另一个程序集,将其中的所有类取出,然后对这些类分别调用泛型类或泛型方法.控制台程序解决方案如下: Main工程:提供Wor ...