用Docker自动构建纸壳CMS

纸壳CMS可以运行在Docker上,接下来看看如何自动构建纸壳CMS的Docker Image。我们希望的是在代码提交到GitHub以后,容器镜像服务可以自动构建Docker Image,构建好以后,就可以直接拿这个Docker Image来运行了。

Dockerfile

最重要的,就是Dockerfile中的定义了。先上代码:

FROM microsoft/aspnetcore-build:2.0 AS builder
WORKDIR /build

# Copy all files
COPY . ./

# Release ZKEACMS.WebHost
WORKDIR /build/src/ZKEACMS.WebHost
RUN dotnet publish -c Release -o ./bin/Release/PublishOutput

# Release ZKEACMS.Article
WORKDIR /build/src/ZKEACMS.Article
RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.Article

# Release ZKEACMS.FormGenerator
WORKDIR /build/src/ZKEACMS.FormGenerator
RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.FormGenerator

# Release ZKEACMS.Message
WORKDIR /build/src/ZKEACMS.Message
RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.Message

# Release ZKEACMS.Product
WORKDIR /build/src/ZKEACMS.Product
RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.Product

# Release ZKEACMS.Redirection
WORKDIR /build/src/ZKEACMS.Redirection
RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.Redirection

# Release ZKEACMS.SectionWidget
WORKDIR /build/src/ZKEACMS.SectionWidget
RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.SectionWidget

# Release ZKEACMS.Shop
WORKDIR /build/src/ZKEACMS.Shop
RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.Shop

#Release ZKEACMS.Sitemap
WORKDIR /build/src/ZKEACMS.Sitemap
RUN dotnet publish -c Release -o ../ZKEACMS.WebHost/bin/Release/PublishOutput/wwwroot/Plugins/ZKEACMS.Sitemap

# Tidy plugins
WORKDIR /build/PluginPublisher
RUN dotnet restore
RUN dotnet build
RUN dotnet run

# Build runtime image
FROM microsoft/aspnetcore:2.0
WORKDIR /zkeacms
COPY --from=builder /build/src/ZKEACMS.WebHost/bin/Release/PublishOutput .
EXPOSE 80
ENTRYPOINT ["dotnet", "ZKEACMS.WebHost.dll"]

简单解释一下,首先,需要使用microsoft/aspnetcore-build来发布纸壳CMS,因为microsoft/aspnetcore只是runtime,并不能release。

  1. 定义编译环境builder
  2. 将源代码复制到编译环境中的build目录
  3. 发布ZKEACMS主程序
  4. 发布ZKEACMS的插件到对应目录
  5. 定义运行环境为 microsoft/aspnetcore:2.0
  6. 将发布好的内容从编译环境中复制到运行环境中

整个Dockerfile的定义很简单,如果您已经有安装了docker,将代码保存到项目的根目录,文件名为Dockerfile,就可以直接使用docker build来生成docker image了。

docker build -t zkeacms .

自动构建

已经定义好了Dockerfile,并可以在docker的环境中编译,发布,那现在就可以使用容器镜像服务来自动构建了。

Docker Hub

使用Docker Hub,创建一个自动构建的仓库,连接到GitHub中的项目,可以轻松实现自动构建

选择一个你的项目

在创建好你的仓库以后,简单设置一下分支和Dockerfile的路径,就可以了

阿里云容器镜像服务

如果你觉得Docker Hub太慢了,在国内,你可以使用阿里云的容器镜像服务。https://dev.aliyun.com/search.html

新建一个镜像仓库就行了:

在设置好以后,你会发现在你的项目设置中,会多了Webhooks或者Integrations & services

原文链接:http://www.zkea.net/codesnippet/detail/post-78

时间: 2024-11-05 09:36:01

用Docker自动构建纸壳CMS的相关文章

在Docker中运行纸壳CMS并配置使用MySql

纸壳CMS是基于ASP.Net Core开发的可视化内容管理系统,可以跨平台部署,可以在容器中运行.接下来看看如何在docker中运行纸壳CMS. GitHub:https://github.com/SeriaWei/ZKEACMS.Core 方式一 直接运行以下命令即可在docker中运行纸壳CMS,运行成功以后,使用{IP}:5000来访问: docker run -d -p 5000:80 zkeasoft/zkeacms 注意:使用这种方式运行,数据库使用的是SQLite. 方式二 接下

纸壳CMS的插件加载机制

纸壳CMS是一个开源的可视化设计CMS,通过拖拽,在线编辑的方式来创建网站. GitHub https://github.com/SeriaWei/ZKEACMS.Core 欢迎Star,Fork,发PR.:) 插件化设计 纸壳CMS是基于插件化设计的,可以通过扩展插件来实现不同的功能.如何通过插件来扩展,可以参考这篇文章: http://www.zkea.net/codesnippet/detail/zkeacms-plugin-development.html 纸壳CMS的插件是相互独立的,

Docker+Jenkins+Gogs 自动构建.Net Core

Docker+Jenkins+Gogs 自动构建.Net Core 引言 jenkins+gags 全部采用Docker安装,通过jenkins插件ssh调用外部Docker构建 主要实现功能: git代码提交至Gogs,Jenkins自动构建至Docker 必要条件 1.Centos 7 2.Docker(题主18.06.1-ce) 3.Dot Net Core(2.1.4 ) .Net Core世界第一??不接受反驳?? ?? 安装Jinkins 镜像传送门 https://hub.dock

gitlab+jenkins+maven+docker持续集成(三)——自动构建

具体原理图,如下,构建项目配置,这里略过,我们直接配置gitlab的自动构建 通过webhook可以实现自动构建,当然jenkins的强大之处在于插件,我们先安装插件 Jenkins-->插件管理 Gitlab Hook Plugin GitLab Plugin 安装后,就可以开始 了 在项目--配置--构建触发器 选择, Build when a change is pushed to GitLab 这样我们就得到了URL和一串Secret token 然后在gitlab配置webhook ,

Gulp自动构建Web前端程序

这两天一个朋友在项目上碰到了一个这样的问题,在运营过程中,用户在浏览器上对某个表单进行数据提交时,需要引入新的平台接口数据的业务,通过评估,开发团队马上修改了相关后台代码和部分的前端脚本代码,通过简单测试并很快上线.当是上线后客户端的功能没有发生任何变化和修改前表现的状况是一样.遇到这样的问题,开发团队一时有点迷糊,明明是修改了功能并进行了部署却没有让用户使用到该功能,不知道该如何下手了. 有过一定前端开发经验的朋友应该知道这是浏览器缓存Web资源导致的问题,针对这样的实际问题,项目上应该有自己

Docker镜像构建

一.docker镜像构建 1.环境准备 环境准备 IP 主机名 操作系统 192.168.56.11 linux-node1 centos7 注意:我这里使用的是centos7,如果是使用centos5或者centos6,需要升级操作系统内核,否则Docker的许多新功能都无法使用 2.构建方式 - 手动构建 - 自动构建,(通过Dockerfile方式) 3.删除原有镜像 为了防止干扰,将以前创建的容器全部删掉. 切记 切记 切记:生产环境慎用.  否则真的会发生  从删除到跑路... 获取容

[系统集成] Android 自动构建系统

一.简介 android app 自动构建服务器用于自动下载app代码.自动打包.发布,要建立这样的服务器,关键要解决以下几个问题: 1. android app 自动化打包android 的打包一般是人工通过eclipse或者studio的ui界面打包的,如果要让系统自动打包,必须在控制台环境下:只要按照 google 的文档,把 eclipse 或者 studio 工程转化为 ant 或者 gradle 工程,就可以在控制台环境下打包了:这里,我们选择 ant,主要是它容错好,遇到图片格式等

Docker镜像构建的优化总结

Docker镜像构建的优化总结 随着我们对docker镜像的持续使用,在此过程中如果不加以注意并且优化,镜像的体积会越来越多.很多时候我们在使用docker部署应用时,会发现镜像的体积至少有1G以上.镜像体积的增大,不单单会增加磁盘资源与网络资源的开销,也会影响应用的部署效率,使得应用的部署时间会越来越长.因此我们需要减少部署镜像的体积以加快部署效率,降低资源的开销.而对于镜像的优化,可以通过对dockerfile的优化来实现. 一.镜像最小化 1.选择最精简的基础镜像 选择体积最小的基础镜像可

GitHub + circleCI 自动构建/自动部署 应用

GitHub + circleCI 自动构建/自动部署, 这里略过了单元测试,以部署 laravel 应用为例子 比起 gitlab + ansible + genkins 操作起来节省了很多硬件资源,感谢 微软 免费了 GitHub 私有仓库 1.GitHub 相关 a.创建 github 仓库(现在可以免费创建私有仓库了,个人项目能满足了) b.配置 SSH 公钥,可以走 SSH 渠道免密 拉取代码 2.circleCI 相关 a.github 登陆 https://circleci.com