netcore3.1+jenkins+docker在ubantu中部署

最近由于疫情给了不少时间,之前断断续续做过很多关乎docker的学习,一直敲各种命令,觉得太麻烦了,没继续深入下去,这段时间又琢磨了一阵子,说一说遇到的一些问题,记录一下。ubantu是安装在台式机中的,总觉得虚拟机太麻烦,直接把台式机的机械硬盘电源线拔了,把系统安装到了120g的固态硬盘上,平时闲置的也算做了一些贡献,ubantu上有一些小游戏挺好玩,扯远了。。。

安装环境就不说了,总体思路就是代码传递到码云,由jenkins下载最新代码,执行dockerfile,运行容器。开始是做的jenkins和码云的自动触发,上一篇文章简单写了写,主要涉及到jenkins权限和码云接口调用

http://用户名:用户[email protected]外网域名:端口/job/项目名称/build?token=webhook密码

dockerfile要放到项目根目录,涉及到要拷贝编译项目文件,长这样

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
RUN sed -i [email protected]/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN apt-get clean
RUN apt-get update
RUN apt-get install -y --no-install-recommends libgdiplus libc6-dev
RUN apt-get -y install fonts-wqy-zenhei && apt-get clean &&  fc-cache -fv
WORKDIR /app
EXPOSE 8238

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ./ /src
RUN dotnet restore "./FruitsCMS.Mvc/FruitsCMS.Mvc.csproj"
COPY . .
WORKDIR "/src/FruitsCMS.Mvc/."
RUN dotnet build "FruitsCMS.Mvc.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "FruitsCMS.Mvc.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "FruitsCMS.Mvc.dll"]

遇到一个问题,就是跑起来容易,怎么也访问不到,原来localhost只能在容器内容访问,所以hosting.json得写成这样

{
  "urls": "http://*:8238;"
}

再来贴一下jenkins的构建脚本

# 切换到源码目录,对应在jenkins-home的workspace下面
cd ~/workspace/FruitsCMS;
image_version=`date +%Y%m%d%H%M`;
echo $image_version;
# 停止之前的docker container
docker stop fruits_cms;
# 删除这个container
docker rm fruits_cms;
# build镜像并且打上tag
docker build -t fruits_cms:$image_version .;
docker images;
# 把刚刚build出来的镜像跑起来
docker run -p 8082:8238 -v fruitscms-log-vol:/app/LogFiles -v fruitscms-resource-vol:/app/wwwroot/Resource/ -e TZ=Asia/Shanghai --restart=always --name fruits_cms -d fruits_cms:$image_version;
docker logs fruits_cms;

这个地方涉及到资源文件夹要映射到宿主机目录,看了半天文件夹挂载,结果是两个意思,应该是使用卷,参考链接:https://www.cnblogs.com/edisonchou/p/docker_volumes_introduction.html,第一次时候需要注释停止容器和删除容器操作,因为这个时候还没有容器在跑,跑起来再放开这个注释,有问题及时留言了。。。

原文地址:https://www.cnblogs.com/wangbg/p/12344020.html

时间: 2024-11-08 18:28:52

netcore3.1+jenkins+docker在ubantu中部署的相关文章

Docker 在容器中部署静态网站

Docker 在容器中部署静态网站 在容器中部署静态网站 设置容器的端口映射 run -P``--publish-all=true|false:容器暴露的所有端口进行映射 -p``--publish=[]:指定映射哪些容器端口 80:随机映射 8080:80:一一对应 0.0.0.0:80:指定IP 0.0.0.0:8080:80:IP 宿主机端口 容器端口 容器Nginx部署 创建映射80端口的交互式容器 安装Nginx 安装文本编辑器VIM 创建静态页面 修改Nginx配置文件 运行Ngin

node项目自动化部署--基于Jenkins,Docker,Github(3)自动化部署

GitHub仓库 由于现在的代码基本上都是多人合作开发,所以肯定会用到像 git 这样的版本控制工具 所以这里使用 GitHub 来做一个演示 首先我们需要在github上新建一个仓库 点击New来新建一个仓库 输入一个名字 以及描述后点击 create 然后将代码上传到GitHub上 这里我上传的是一个简单的 hello world 的demo 到这里要部署的代码就准备完成了,接下来需要编写 Dockerfile 来告诉 docker 该怎么打包我们的项目 Dockerfile编写 首先我们在

jenkins+docker的简单项目部署

怎么使用docker实现新项目的发布,一般有两种方式,以一个web容器为例: 1:定制一个通用的web容器镜像,以逻辑卷-v的方式,关联webapp目录到宿主机,每次发布新版本时只需要更新宿主机上关联目录的项目包(例如war包),然后重启web的相关docker容器.完成新版本发布. 2:以dockerfile的方式,每次发布新版本时,把相应的程序包传入dockerfile,一起打包成一个新的web容器镜像,停止旧版本的容器,然后以新镜像启动容器.完成新版本发布. 这里我想以dockerfile

在ubantu中部署rails

经过几天的学习,工作需要新的项目是用rails完成的,目的是为了部署的方便.写的过程还好,但是在部署的时候很痛苦,经过2天的摸索终于部署成功,现在把它记录下来希望可以有所帮助,也希望看到这篇文章的人可以多多指正. 第一次部署的尝试,直接进入项目所在目录,然后执行 rails server 启动rails,启动成功,访问也成功,但是准备上线的时候发现一个很悲催的bug,就是访问的时候不能实现多线程,只能放弃这种启动的方法. 第二次部署的尝试,前面用nginx,后面用passenger,网上的步骤已

Ubuntu中安装jenkins+docker,实现项目部署

本人对于linux系统是个小白,恰逢公司新框架需要docker+jenkins部署项目,所以通过同事口述+一顿乱查,终于实现在虚拟机上搭建的ubuntu系统中 实现jenkins +docker 自动部署拉取项目. 赶紧做个记录! 准备条件: 1.虚拟机内安装ubuntu随后再做记录,虽说同事已经演示过,但是自己还是得记录下. 2.jenkins 需要环境:由于本人直接将jenkins安装于宿主机中(还可以将jenkins安装于docker中---这个随后再研究,一步一步来),所以需要JDK+T

Linux文档整理之【Jenkins+Docker自动化部署.Net Core】

这次整理的文档是Jenkins+Docker实现自动化部署,很早之前就写的,今天有时间就搬到博客园做个记录. Jenkins是基于Java开发的一种持续集成工具,主要用于持续.自动的构建/测试软件等相关项目.在Java开发中我们经常能看到使用jenkins来部署,.Net core目前还是比较少见的,但是好的东西我们就应该要拿来使用.借鉴. 1. 安装JenKins 这里使用Docker来安装JenKins,当然也可以直接安装到Linux中. 创建jenkins工作目录 mkdir /usr/l

同一个Docker swarm集群中部署多版本的测试环境

先介绍下用到的技术 Docker swarm: Docker官方的集群管理工具,相比kubernetes更加简单,容易入门.https://docs.docker.com/engine/swarm/ Traefik: 一个现代化的反向代理工具,原生支持Docker swarm模式,可以实现swarm的动态代理.https://docs.traefik.io/user-guide/swarm-mode/ 下图展示主要的思路: 在Docker swarm中创建某个测试版本service时,通过设置s

在Docker容器中部署Web应用

本文直接讲解如何在Docker容器中实战部署一个Web应用程序,关于Docker相关的概念和如何安装Docker请参考相关资料完成. 第一步:工具准备 演示如何在Docker容器中部署一个Java Web应用程序,需要准备的软件工具包括:jre,tomcat和webapp应用.另外,为了实现在容器启动时自动启动webapp,需要编写一个脚本工具完成该工作. 安装jre,请参考:http://www.wikihow.com/Install-Java-on-Linux 安装tomcat,请参考:ht

如果在docker中部署tomcat,并且部署java应用程序

1.先说如何在docker中部署tomcat 第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7: 第二步:创建Dockerfile,命令如:touch Dockerfile: 第三步:编写Dockerfile,命令如:vim Dockerfile,完成以下命令编写: FROM ubuntu:14.04 MAINTAINER zhaichong <[email protected]> ENV REFRES