把ABP框架部署到Docker中

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

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

一、前期准备工作

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

把ABP框架部署到Docker中第1张

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

把ABP框架部署到Docker中第2张

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也执行这样的操作。 

把ABP框架部署到Docker中第3张

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

把ABP框架部署到Docker中第4张

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

把ABP框架部署到Docker中第5张

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中第6张

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

把ABP框架部署到Docker中第7张

把ABP框架部署到Docker中第8张

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

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

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

把ABP框架部署到Docker中第9张

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

免责声明:文章转载自《把ABP框架部署到Docker中》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇火狐浏览器单击链接总是在一个新的标签页打开的设置方法每次都能让人头大的 Shader -- 从一次简单的功能说起下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

docker 配置 mysql

docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7.30 ## 一个是数据文件夹,一个是配置文件夹 ## mysql 容器中 my.cnf incloud 了 conf.d 文件夹下所有的 cnf 配置文件,所以这里我们只要将 conf.d...

Dockerfile注意事项

准则 尽量将Dockerfile放在空目录中,如果目录中必须有其他文件,则使用.dockerignore文件。 避免安装不必须的包。 每个容器应该只关注一个功能点。 最小化镜像的层数。 多行参数时应该分类。这样更清晰直白,便于阅读和review,另外,在每个换行符前都增加一个空格。 对构建缓存要有清楚的认识。 指令注意事项 FROM Dockerfil...

Kubernetes进阶实战读书笔记:配置容器应用(容器化应用配置方式)

一、容器化应用配置方式 每个应用程序都是一个可执行程序文件、它包含操作码列表、CPU通过执行这些操作码来完成特定的操作、例如,cat命令是由:/usr/bin/cat文件提供的、该文件含有机器指令的列表、在屏幕上显示制定文件的内容时需要使用这些机器指令、几乎每个程序的行为都可以通过其命令选项及参数或配置文件来按需定制、实践中、人们通常不会以默认的配置参数运...

【Docker】解析器指令之 escape

参考教程:https://docs.docker.com/engine/reference/builder/ 环境 virtual box 6.1 centos 7.8 docker 19.03 escape # escape= (backslash) Or # escape=` (backtick) The escape directive se...

Redis缓存数据库安全加固指导(一)

背景 在众多开源缓存技术中,Redis无疑是目前功能最为强大,应用最多的缓存技术之一,参考2018年国外数据库技术权威网站DB-Engines关于key-value数据库流行度排名,Redis暂列第一位,但是原生Redis版本在安全方面非常薄弱,很多地方不满足安全要求,如果暴露在公网上,极易受到恶意攻击,导致数据泄露和丢失。 本文主要是在原生开源软件Red...

macOS下通过docker在局域网成功访问mysql5.6数据库

1.获取mysql镜像 docker pull mysql:5.6 注意:此处之所以获取mysql5.6是因为mysql5.7在centos7中启动可能会报错, 2.查看镜像列表 docker images 3.启动mysql镜像 docker run -itd -P mysql:5.6 bash 其中 docker run是启动容器的命令;i是交互式操...