阅读本文约需要7分钟 

大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈)。上次老师跟大家分享了下SpringBoot如何实现全链路调用日志跟踪的相关知识,今天跟大家分享基于Docker搭建基础自动化部署的知识。

1 基于Docker搭建基础自动化部署

问题背景

公司初创技术团队,没有任何基础设施的情况下,需要搭建一系列code管理以及自动化部署等工具....所以 引发了下面一系列的部署过程,历时两天,中间也是碰到各种问题,但最终把基本工具全部搭建成功,耶~,下面带大家一起看下此次搭建过程。

资源

服务器一台,CentOS的,公司就给了一台配置较低的服务器当临时服务器,没办法了,就这么搞吧。

思考:如果我用传统的yum来安装,肯定会被我装乱七八糟,还不方便自己管理维护,左右为难的情况下我选择了Dokcer,可能有些小伙伴问Docker是啥怎么用,不要慌这里有传送门:Linux docker-compose 实战、 [进阶篇]docker编排PHP开发坏境

测试环境搭建

为了快速搭建一套PHP测试环境我决定用laradock了,虽然文件很多,但是里面封装的东西也是比较全的,后期开发不知道会用到什么技术,就决定先用这个,随时可以启动用得到的服务。laradock官方文档给的介绍也很全面,我这里采用的方式是部署多套项目方式目录结构如下:

+ laradock+ project-1+ project-2

开始使用:

  1. git clone https://github.com/laradock/l...

  2. cp env-example .env

    env 里面的配置可以修改的,可以根据自己情况进行调整

  3. docker-compose up -d nginx php-fpm mysql redis

    后面可以加上你要启动的程序,像rabbitmq、mongo等等,需要的时候追加在尾部就可以启动,首次启动时间有点长

  4. docker-compose exec --user=laradock workspace bash

    像laravel等项目肯定少不了composer,执行这个命令进入工作区,就可以执行composer了

  5. docker-compose exec nginx nginx -s reload

    肯定有人会问我更改了nginx配置是不是每次都要进入nginx容器去重启,或者把整个容器都重启了呀,不用的,执行这个命令就可以重启nginx了。nginx站点配置文件在哪里呢:./laradock/nginx/sites/

先运行下试试吧。

GitLab

现在运行环境已经搭建好了,我代码应该怎么存放呢,其实有很多的选择,要根据自己的实际情况出发,如:GitHub、码云、GitLab等等,我选择的是GitLab,刚开始没有发现laradock其实提供了GitLab服务。。只能自己折腾了,其实很简单。

docker \run -d  \-p 443:443 \-p 8080:80 \-p 222:22 \--name gitlab \--restart always \-v /home/gitlab/config:/etc/gitlab \-v /home/gitlab/logs:/var/log/gitlab \-v /home/gitlab/data:/var/opt/gitlab \gitlab/gitlab-ce#参数解释:#-d:让容器后台运行#-p:暴露端口,把容器的443端口指向到宿主机443端口,宿主机8080->容器80,宿主机222->容器22#宿主机端口可以根据自己的情况自己定制#-name 给你的容器起个名,只要不和现有的重复就可以#--restart 当容器退出时docker是否重启#-v 这就是挂载磁盘了,把宿主机的目录挂载到容器中,这么做哪怕是容器坏了我的内容也不会丢失。#宿主机/home/gitlab/config目录挂载到容器中/etc/gitlab目录,宿主机目录根据自己情况定#gitlab/gitlab-ce 这个就是要启动的镜像,如果镜像不存在,docker会自动下载最新版

容器启动成功之后会有一段时间来启动GitLab,看到启动成功立马访问是访问不到的,稍微等一下就可以了,配置文件都在你指定的宿主机目录下可以修改,需要修改的内容如下:

  gitlab_rails['gitlab_ssh_host'] = '宿主机IP'#宿主机的IP地址  gitlab_rails['gitlab_shell_ssh_port'] = 222#暴露给宿主机的ssh端口  external_url '域名'#分配给gitlab的域名,可以用nginx做反向代理到8080端口

Jenkins

实现自动化部署有很多种方式如:webhook、Jenkins、Travis CI等等,我的选择是Jenkins,因为之前部署用过所以这里依旧用了这个,laradock依旧提供了Jenkins服务,又是因为没发现自己搭建了一个。。。看来下次要先多看看在动手了。

docker run -d \     --name myjenkins \     -p 8181:8080 \     -p 50000:50000 \     -v /home/jenkins/:/var/jenkins_home \     jenkins/jenkins     #参数解释     #-d:让容器后台运行     #-p:暴露端口,宿主机8181->容器8080,宿主机50000->容器50000     #-v 这就是挂载磁盘了,把宿主机的目录挂载到容器中,这么做哪怕是容器坏了我的内容也不会丢失。     #宿主机/home/jenkins/目录挂载到容器中/var/jenkins_home目录,宿主机目录根据自己情况定

是不是也很简单~。~ ,但是Jenkins安装成功后会有一个初始化密码,怎么查看初始化密码呢,有两种方式:

#第一种方式docker logs  #这样就可以查看容器输出的内容#第二种方式cat /home/jenkins/secrets/initialAdminPassword#这里好的/home/jenkins需要替换成你挂载的目录

jenkins配置

初始化

clipboard.png

输入你上面获取到的初始化密码,下一步我选择的是推荐安装,后面自己需要的自己可以再去插件库安装。

插件安装

初始化成功之后前往系统设置->插件管理安装几个必要插件:

Publish Over SSHGitLab Plugin #因为是使用的Gitlab所以要安装这个NodeJS Plugin #我们前端使用的Vue所以要用到node

开始征程

一、基础配置

安装完插件之后需要配置一些基础内容如jdk、node、ssh等

  • ssh安装

进入:Manage Jenkins-> Configure System

clipboard.png

点击高级:

clipboard.png

点击Test Configuration测试是否连接成功


  • jdk、git

进入:Manage Jenkins-> Global Tool Configuration

clipboard.png

我这里jdk、git采用自动安装,jdk安装时候需要一个账号,去注册下就可以

  • nodejs安装

二、创建工程

clipboard.png
  1. 新建一个工程
  2. 选择自由风格

三、配置工程

clipboard.png

设置最多保留几个版本构建

clipboard.png

使用git源码工具,输入git地址、添加git用户

clipboard.png
if [ -f "test.tar.gz" ];thenrm testv.tar.gzfitar -zcvf test.tar.gz ./*

这里为什么要把项目打包呢,因为下面要配置的ssh不支持文件夹传输,所以需要先将内容进行打包然后去服务器进行解包

clipboard.png

全部保存好就可以去构建了。

参考文献:sf.gg/a/1190000019729005

好了,今天技术部分就讲到这里。还有一个重要的事,我们现在已开放对外招导师。工资还可以,大概15K-25K,点击下面【链接】有详细介绍!(注意!每期我们只招1个人!)

15K~25K招聘导师若干名

docker 启动容器的时候没-p 后面怎么加-p_基于Docker搭建基础自动化部署相关推荐

  1. CentOS7使用docker 启动容器后 , 宿主机连接访问不到容器的端口

    CentOS7使用docker 启动容器后 , 宿主机连接访问不到容器的端口 注意第一种方法是在网上找的 , 我并没有执行成功 , 但是他分析的很不错, 可以参考第二种方法 首先需要明确docker的 ...

  2. docker启动容器

    启动容器 有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动. 因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器.所需要 ...

  3. docker 启动容器报 error creating overlay mount to /var/lib/docker/overlay2

    问题: 今天用 docker 启动容器时,出现以下错误 Error response from daemon: error creating overlay mount to /var/lib/doc ...

  4. docker启动容器服务之后访问失败

    关于docker启动容器服务之后,宿主机访问失败(解决方法) 注:在进行docker容器启动宿主机进行容器访问时,无需进行网络的配置,docker容器在启动时会自动解决 第一种原因及修改方法 在进行启 ...

  5. docker 启动容器报错及解决办法

    docker 启动容器报错:Error response from daemon: oci runtime error: container_linux.go:247: starting contai ...

  6. docker启动容器命令

    docker启动容器命令: docker run -it ubuntu:16.04 bash //其中ubuntu后面的tag必须要加,否则会默认重新拉取并打开ubuntu:latest镜像 //如果 ...

  7. docker build 变量_Docker从入门到掉坑(二):基于Docker构建SpringBoot微服务

    在之前的文章里面介绍了如何基于docker容器部署一些常见的基础环境,例如MySQL.Redis这些,那么这篇文章里面我会介绍一些关于SpringBoot如何打包运行到docker容器中. 先介绍一下 ...

  8. Centos 7 docker 启动容器iptables报No chain/target/match by that name

    启动一个有nat映射端口的容器时iptables 报No chain/target/match by that name docker run -d -p 2181:2181 -p 2888:2888 ...

  9. docker 启动容器出现 Exited

    有时候在启动容器的时候,启动没报错,但是在执行 docker ps -a 时发现刚启动的容器状态为Exited(1),这个时候查看日志 docker logs -f -t --tail 20 容器ID ...

最新文章

  1. 解决EditText在ListView Item中,第一次点击无法获取焦点问题
  2. BZOJ2958 序列染色(动态规划)
  3. oauth 使用令牌_使用OAuth2令牌的安全REST服务
  4. 拿什么拯救我,我的爱人
  5. 基于AE+C#实现在TOCControl中实现指定图层删除
  6. c++ 11 之lambda
  7. 翻译: 如何使用 Xcode 的内存图调试器检测 iOS 内存泄漏并保留周期
  8. IPQ4019/QCA9531/MT7628/MT7621系嵌入式无线双频AP核心模块选型探讨
  9. 《ffmpeg入门学习》 五 多个图片合成一张图片
  10. 8、共射放大电路一般性质与放大电路的直流偏移
  11. 华为交换机 查ip冲突_怎么查看华为交换机已绑定的ip与mac
  12. 什么是透视?什么是一点透视?
  13. 计算机网络: IP地址,子网掩码,网段表示法,默认网关,DNS服务器详解
  14. Java实现 LeetCode 328 奇偶链表
  15. SQL Server 索引(index) 和 视图(view) 的简单介绍和操作
  16. python pip在哪个文件夹运行_如何安装python与pip-百度经验
  17. 液晶12864显示字符
  18. 【HTML】DAY 2
  19. YOLOV3在windwos下的配置和训练过程简述
  20. 八块腹肌:硅谷程序员的新标配

热门文章

  1. java 简单数组_Java 数组分析及简单实例
  2. 假期作业python
  3. ps教程分享:一定要记住这20种PS技术!
  4. 2、python的print函数格式化输出
  5. asp.net GridView控件的列属性
  6. [转载] python格式化字符串漏洞_从两道CTF实例看python格式化字符串漏洞
  7. 电平转换与总线收发器详细介绍
  8. python函数的参数-可变参数,关键字参数
  9. git 常用命令及虚拟机服务器仓库搭建
  10. 前端-JavaScript1-6——JavaScript之变量类型的转换