A sample of Docker & Jenkins & Node Express

一、安装docker

参考 www.cnblogs.com/yufeng218/p…

二、利用docker安装jenkins

1、拉取jenkins镜像,拉取之前可先查询jenkins镜像列表

$ docker search jenkins
复制代码

2、这里我们就用jenkins官方镜像(第一个DESCRIPTION为OFFICLIAL )

$ docker pull jenkins:latest
复制代码

3、启动jenkins容器

$ sudo docker run -d --name myjenkins --user=root -p 32771:8080 -v /var/jenkins_home:/var/jenkins_home jenkins:latest
# -d 表示后台运行容器
# --name myjenkins 表示容器别名
# --user=root 表示以root身份执行(很重要,原因是保证容器挂载到宿主机时创建的目录拥有读写权限,当然也可以用chmod命令给文件目录分配权限)
# -p 表示把容器的8080端口映射到宿主机的32771端口
# -v 表示把容器的/var/jenkins_home文件目录挂载到宿主机的/var/jenkins_home目录下
# jenkins:latest 表示运行容器的基础镜像
复制代码

确保服务器32771端口可访问

三、配置jenkins

1、浏览器访问jenkins,地址为 宿主机ip:32771,会看到

2、访问jenkins需要初始密钥,此密钥可用命令docker logs 查看,亦可在/var/jenkins_home/secrets/ initialAdminPassword文件中查看

3、点击右下角Continue,在Customize Jenkins页面选择Install suggested plugins,下载推荐插件,有些下载失败不必在意

4、完成后Continue,Create First Admin User页面设置admin用户(记住下次登陆时,用户名和密码并不 是现在设置的,而是admin和第1步中的密钥,我们在/var/jenkins_home/users下可以看到对应的用户以及用户config.xml配置文件)5、Continue,进入首页,点击"系统管理" -> "管理插件" --> "可选插件" --> "右上角过滤ssh" --> "选择Publish Over SSH" --> 点击"直接安装" (此插件用作ssh登陆) 6、回到首页,点击"系统管理" --> "系统设置" --> 拉到最下面找到 "Publish over SSH" , 设置服务器的SSH信息

  • 此处有两种设置方式,第一种是利用宿主机user和password登陆,配置如下:

    Passphrase项 为登陆宿主机password

    Name项 随意配置

    Hostname项 为宿主机ip

    Username项 为登陆宿主机username

    Remote Directory项 为配置宿主机工作目录

  • 配置Rsa免密登陆

    1、先在宿主机和容器中配置Rsa密钥

    # 新建 .ssh/authorized_keys文件 .ssh目录的权限设为700 .ssh/authorized_keys文件权限设为600
    $ mkdir ~/.ssh -m 7000 && cd ~/.ssh && touch authorized_keys
    # 从宿主机客户端进入我们刚启动的jenkins容器,目前容器名myjenkins,也可通过docker ps命令查看
    $ docker exec -it myjenkins /bin/bash
    # 进入容器后建立.ssh目录,创建密钥文件私钥id_rsa,公钥id_rsa.pub
    $ mkdir ~/.ssh && cd ~/.ssh
    $ ssh-keygen -t rsa
    # 一直回车即可
    
    #将公钥拷贝到authorized_keys文件
    $ cat id_rsa.pub >> authorized_keys
    # 将生成的authorized_keys拷贝到要连接的linux机器上的对应用户下的.ssh/authorized_keys文件
        # root@116.62.189.37 root为登陆linux机器用户名,116.62.189.37为ip,此操作提示需要密码
        # /root/.ssh/authorized_keys为linux机器上我们刚新建的.ssh/authorized_keys文件
    $ scp authorized_keys root@116.62.189.37:/root/.ssh/authorized_keys
    # 在此linux机器上的配置文件/etc/ssh/sshd_config,找到以下内容,并去掉注释符"#",没有则加上
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeyFiles .ssh/authorized_keys # 默认公钥存放的位置
    StrictModes no
    # 退出容器
    $ exit
    # 使配置生效
    $ service sshd restart
    复制代码

    2、在jenkins中配置ssh

    ​ Parh to key项 此路径为我们上一步在myjenkins容器中生成的id_rsa路径

    ​ Name项 随意配置

    ​ Hostname项 为宿主机ip

    ​ Username项 为登陆宿主机username

    ​ Remote Directory项 为配置宿主机工作目录

这两种方式选其一即可,配置完后可点击右下角Test Configuration验证配置是否正确,

亦可在容器中执行ssh -i ~/.ssh/id_rsa root@116.62.189.37

如果验证失败,可在linux机器var/log/secure文件中检查日志

7、回到首页,点击左上角“新建” --> "填写项目名称即可" --> "配置源码管理": 填写项目地址(如果Git项目为私有项目,则需要点击Add添加你的Git账号,完成之后在这里选择你的Git账号),附上我的sample地址 github.com/xiyoung/tes…

--> 配置构建环境

图中代码为

sudo docker stop testJenkinsNode || true \&& sudo docker rm testJenkinsNode || true \&& cd /var/jenkins_home/workspace/test-jenkins-node \&& sudo docker build --rm --no-cache=true  -t test-jenkins-node:latest . \&& sudo docker run -d  --name testJenkinsNode -p 3000:3000 test-jenkins-node:latest
复制代码

8、保存后回到首页,选择刚刚创建的项目,点击"立即构建" -->"构建历史" --> "构建标签" --> "控制台输出" 可以看到构建日志

完成后在连接到的linux服务器上/var/jenkins_home/workspace/目录下会看到我们在Git上的项目( github.com/xiyoung/tes…)

9、若构建成功且容器启动成功,浏览器输入116.62.189.37:3000应该能看到下图内容

注意两个步骤:

​ 第9步配置ssh,建议用第一种方式

​ 第10步配置构建环境的Exec command得细心,此配置是结合我个人sample的Dockerfile文件写的

四、常用简单命令

    docker ps # 查看当前正在运行的容器docker ps -a # 查看所有容器的状态docker start/stop id/name # 启动/停止某个容器docker attach id # 进入某个容器(使用exit退出后容器也跟着停止运行)docker exec -ti id # 启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行)docker images/image ls # 查看本地所有镜像docker rm id/name # 删除某个容器docker rmi id/name # 删除某个镜像docker run --name test -ti ubuntu /bin/bash  # 复制ubuntu容器并且重命名为test且运行,然 后以伪终端交互式方式进入容器,运行bashdocker build -t test-jenkins-node .  #通过当前目录下的Dockerfile创建一个名为test-            jenkins-node的镜像docker run -d -p 2222:22 --name test-jenkins-node test-jenkins-node:latest  # 以镜像     test-jenkins-node:latest创建名为test-jenkins-node的容器,并以后台模式运行,并做端口映射到主     机2222端口,P参数重启容器宿主机端口会发生改变
复制代码
五、目标

搭建类似于阿里云的自动化云效工作流水线

转载于:https://juejin.im/post/5bee7fc3e51d452ade4fb0f0

Docker Jenkins Node(一):初步构建相关推荐

  1. Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目

    Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目 前文使用Docker搭建Jenkins+Docker持续集成环境我们已经搭建了基于docker+ ...

  2. 使用Docker+Jenkins自动构建部署

    转载自 https://segmentfault.com/a/1190000012921606 环境 阿里云ESC,宿主机服务器安装Docker,在安全规则中确认8080端口开启. 客户端mac 运行 ...

  3. CI/CD——构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台

    构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台 CI/CD是什么? 持续集成(CI)/持续交付(CD)的优势 自动化部署流程图 Git Github Gi ...

  4. 前端开发者应该知道的 Centos/Docker/Nginx/Node/Jenkins 操作

    点击上方 程序员成长指北,关注公众号 回复1,加入高级 Node 进阶交流群 来源:ask_the_sky https://juejin.cn/post/6951684431597797389 服务器 ...

  5. 超实用,一口气学会 Centos/Docker/Nginx/Node/Jenkins 等基础操作

    作者:ask_the_sky https://juejin.cn/post/6951684431597797389 服务器作为开发的一环,并且现在非常多的商业公司部署在生产环境上的服务器都是CentO ...

  6. 前端人应该知道的 Centos/Docker/Nginx/Node/Jenkins 的基本操作

    点击上方关注 前端技术江湖,一起学习,天天进步 来源:ask_the_sky https://juejin.cn/post/6951684431597797389 服务器作为开发的一环,并且现在非常多 ...

  7. docker+nginx+node+jenkins从零开始部署你的前端服务

    前言 如果你不甘于做一个纯粹的页面仔,想了解一个web应用从编写到到发布到用户可见的全过程,或是想自己玩一点新东西,突破原有的技术圈层,那么本文将是一个很好的入门指南.笔者将从实战入手,尽可能细致地结 ...

  8. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...

    本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 项目完整源码下载 https://github ...

  9. SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战

    作者:寅务 www.jianshu.com/p/bdb0642b7495 1.前言与初衷 本文章会涉及Docker常见命令基础知识点结合不同场景实操一起使用. 本文章会涉及结合工作过程中部署不同环境服 ...

最新文章

  1. (Interrupt Latency) 中断延迟
  2. visual-reasoning 笔记
  3. DATETIME类型和BIGINT 类型互相转换
  4. sphinx.conf listen = 9306:mysql41_Sphinx 安装与使用
  5. SubSonic3.0.0.4.3源码包与调用Dll
  6. ACL 2021 | 复旦大学邱锡鹏组:面向不同NER子任务的统一生成框架
  7. swift中为什么要创造出可选型?
  8. Unity中国张俊波:Unity的国际化、本土化、全球化 | 2019WISE超级进化者大会
  9. 网信办拟规定:平台未经用户同意不得强制订阅关注账号;Twitter回应大范围宕机;Krita 4.4.0发布|极客头条
  10. 1008 数组元素循环右移问题 (20 分)—PAT (Basic Level) Practice (中文)
  11. spring 中发邮件的设置
  12. 泰山游记:道阻且长,活着走出
  13. RHEL/Centos下VSFTPD服务器搭建
  14. 破解Visio时office失效,激活失败
  15. python编程求一个数的平方根_用Python求一个数的平方根.
  16. androidx 填坑记
  17. 使用 OneDrive 对电脑内的任意文件进行备份
  18. 如何从CDN加载jQuery
  19. disallow: /api.php,dz论坛如何禁止搜索引擎抓取任何内容?
  20. Windows 10如何找回显示桌面图标,一键快速回到桌面

热门文章

  1. 基于visual Studio2013解决C语言竞赛题之1026判断排序
  2. iscsi-target
  3. RESTFUL协议入门介绍
  4. Python 安装MySQL数据库工具包
  5. Scala和Java二种方式实战Spark Streaming开发
  6. (转)微信公众平台开发02-接收信息及回复信息
  7. 【Windows 8 Store App】学习二:ResourceLoader
  8. aria2c下载迅雷离线
  9. 【Java 学习笔记】 抽象类和接口
  10. PHP学习之六:预定义常量