一,基于docker-compose实现对nginx+tomcat web服务的单机编排。
介绍:docker-compose是实现对单机容器的快速编排,它将管理的容器分为三层,分别为project,service和container.

1.创建docker-compose.yml文件 每个service包含image,container_name,expose,ports,networks和links(依赖的服务)

cat docker-compose.yml
version: '3.6'
services:nginx-server:image: nginx:1.22.0-alpinecontainer_name: nginx-web1expose:- 80- 443ports:- "80:80"- "443:443"networks: #网络2,使用自定义的网络,如果网络不存在则会自动创建该网络并分配子网,并且容器会有两块网卡- front- backendlinks:- tomcat-servertomcat-server:#image: tomcat:7.0.93-alpineimage: registry.cn-hangzhou.aliyuncs.com/zhangshijie/tomcat-myapp:v1container_name: tomcat-app1##network_mode: bridge #网络1,使用docker安装后的默认网桥#expose:#  - 8080#ports:#  - "8080:8080"networks: #网络2,使用自定义的网络,如果网络不存在则会自动创建该网络并分配子网,并且容器会有一块网卡- backendlinks:- mysql-servermysql-server:image: mysql:5.6.48container_name: mysql-container
**#    network_mode: bridge #网络1,使用docker安装后的默认网桥**volumes:- /data/mysql:/var/lib/mysql#- /etc/mysql/conf/my.cnf:/etc/my.cnf:roenvironment:- "MYSQL_ROOT_PASSWORD=12345678"- "TZ=Asia/Shanghai"expose:- 3306ports:- "3306:3306"networks: #网络2,使用自定义的网络,如果网络不存在则会自动创建该网络并分配子网,并且容器会有一块网卡- backendnetworks:front: #自定义前端服务网络,需要docker-compose创建driver: bridgebackend:  #自定义后端服务的网络,要docker-compose创建driver: bridgedefault: #使用已经存在的docker0默认172.17.0.1/16的网络external:name: bridge

执行docker-compose up -d 命令
root@ubuntu-server1:/data/docker-compose/case3# docker-compose up -d

Creating network "case3_backend" with driver "bridge"
Creating network "case3_front" with driver "bridge"
Pulling mysql-server (mysql:5.6.48)...
5.6.48: Pulling from library/mysql
.....
Digest: sha256:2bf1a0a05a6ad437dcac6689e48a9c33774ac92c6213fce2c4196343210592f3
Status: Downloaded newer image for mysql:5.6.48
Pulling tomcat-server (registry.cn-hangzhou.aliyuncs.com/zhangshijie/tomcat-myapp:v1)...
v1: Pulling from zhangshijie/tomcat-myapp
.....
Digest: sha256:66b601cecdf422c112ba9e71d38e33e577691f91c41b2fe7b5a21055c6a7142a
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/zhangshijie/tomcat-myapp:v1
Creating mysql-container ... done
Creating tomcat-app1     ... done
Creating nginx-web1      ... done

创建网络和拉取镜像。注意里面的links 字段,表示依赖下面的服务。
修改nginx容器配置,访问nginx时转发到后端的tomcat服务上,

root@ubuntu-server1:/data/docker-compose/case3# docker ps -a
CONTAINER ID   IMAGE                                                           COMMAND                  CREATED          STATUS                     PORTS                                                                      NAMES
81599b77c4fd   nginx:1.22.0-alpine                                             "/docker-entrypoint.…"   22 minutes ago   Up 22 minutes              0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   nginx-web1
aeb77640ef60   registry.cn-hangzhou.aliyuncs.com/zhangshijie/tomcat-myapp:v1   "/apps/tomcat/bin/do…"   22 minutes ago   Up 22 minutes              8080/tcp, 8443/tcp                                                         tomcat-app1
e6806bf17625   mysql:5.6.48                                                    "docker-entrypoint.s…"   22 minutes ago   Exited (1) 6 seconds ago                                                                              mysql-container
root@ubuntu-server1:/data/docker-compose/case3# docker exec -it 81599b77c4fd sh
/etc/nginx/conf.d # vim default.conf
.........
location /myapp {proxy_pass http://tomcat-server:8080;}
..........

访问nginx服务,跳转到tomcat服务,成功。

二, 安装gitlab,创建group、user和project并授权

**#安装gitlab**
root@yong:~# dpkg -i gitlab-ce_15.4.3-ce.0_amd64.deb
**#配置/etc/gitlab/gitlab.rb配置文件**
vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.159.130'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "603938723@qq.com"
gitlab_rails['smtp_password'] = "gavtxtsroksubxfx"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = :login
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = "603938723@qq.com"
user["git_user_email"] = "603938723@qq.com"
**#重新配置服务**root@yong:~# gitlab-ctl reconfigure

#创建Group组

#创建user用户 user1 user2

#创建project

![在这里插入图片描述](https://img-blog.csdnimg.cn/bafd2e86467f43d5993f6a71b565b08d.png


#对创建的用户user1,user2授权

三,熟练git命令的基本使用,通过git命令实现源代码的clone、push等基本操作。
登录另一台server1服务器,安装git工具

root@ubuntu-server1:/data# mkdir code
root@ubuntu-server1:/data# cd code
root@ubuntu-server1:/data/code# git clone http://192.168.159.130/primaryedu/app1.git
Cloning into 'app1'...
Username for 'http://192.168.159.130': user1
Password for 'http://user1@192.168.159.130':
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 2.78 KiB | 2.78 MiB/s, done.
root@ubuntu-server1:/data/code# ls
app1
root@ubuntu-server1:/data/code# cd app1/
#生成一个代码文件,把代码文件上传到git服务器
root@ubuntu-server1:/data/code/app1# cat index.html
<h1>This is a heading1</h1>
root@ubuntu-server1:/data/code/app1# git config --global user.email "admin@qq.com"  #设置全局邮箱
root@ubuntu-server1:/data/code/app1# git config --global user.name "admin"   #设置全局用户名
root@ubuntu-server1:/data/code/app1# git add .     #添加当前目录下所有数据到暂存区
root@ubuntu-server1:/data/code/app1# git commit -m "add inde.html"   #提交文件到工作区
root@ubuntu-server1:/data/code/app1# git push  #提交代码到服务器,分支是master是受保护分支,无论是master还是开发者都无权限push,只有owner user2可以操作
Username for 'http://192.168.159.130': user2
Password for 'http://user2@192.168.159.130':
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 2 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 295 bytes | 295.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://192.168.159.130/primaryedu/app1.gite2b5f64..cacc324  main -> main


#更新代码,操作代码本地回退操作

root@ubuntu-server1:/data/code/app1# cat index.html
<h1>This is a heading1</h1>
<h1>This is a heading22222222222</h1>
root@ubuntu-server1:/data/code/app1# git add .
root@ubuntu-server1:/data/code/app1# git commit -m "v2"
[main 64b6ef4] v21 file changed, 1 insertion(+)
root@ubuntu-server1:/data/code/app1# git push
Username for 'http://192.168.159.130': user2
Password for 'http://user2@192.168.159.130':
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 2 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 294 bytes | 294.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://192.168.159.130/primaryedu/app1.gitcacc324..64b6ef4  main -> main
root@ubuntu-server1:/data/code/app1# git reset --hard HEAD^  **#git版本回滚, HEAD为当前版**本,加一个^为上一个,^^为上上一个版本
HEAD is now at cacc324 add inde.html
root@ubuntu-server1:/data/code/app1# cat index.html
<h1>This is a heading1</h1>

四,熟练掌握对gitlab服务的数据备份与恢复
#执行备份命令
root@ubuntu-server1:/data/code/app1# gitlab-ctl stop unicorn sidekiq
root@ubuntu-server1:/data/code/app1# gitlab-rake gitlab:backup:create
2022-11-09 15:09:41 +0000 – Dumping main_database …
Dumping PostgreSQL database gitlabhq_production … [DONE]
2022-11-09 15:09:46 +0000 – Dumping main_database … done
root@ubuntu-server1:/data/code/app1# cd /var/opt/gitlab/backups/
root@ubuntu-server1:/var/opt/gitlab/backups# ls
1668006581_2022_11_09_15.4.3_gitlab_backup.tar #生成的备份文件包,用于恢复

删除用户user1,在线编辑修改代码,合并提交


#执行恢复操作

root@ubuntu-server1#gitlab-ctl stop unicorn sidekiq
root@ubuntu-server1#gitlab-rake gitlab:backup:create
root@ubuntu-server1# cd /var/opt/gitlab/backups/
root@ubuntu-server1:/var/opt/gitlab/backups# ls
1668006581_2022_11_09_15.4.3_gitlab_backup.tar

root@ubuntu-server1#gitlab-rake gitlab:backup:restore BACKUP=1668006581_2022_11_09_15.4.3
root@ubuntu-server1:/var/opt/gitlab/backups# gitlab-ctl start unicorn sidekiq  #启动服务


五,部署jenkins服务器并安装gitlab插件、实现代码免秘钥clone
#安装jenkins服务,修改配置文件

root@jenkins:~# dpkg -i jenkins_2.361.2_all.deb && systemctl stop jenkins
Selecting previously unselected package jenkins.
(Reading database ... 73685 files and directories currently installed.)
Preparing to unpack jenkins_2.361.2_all.deb ...
...................
root@jenkins:~# vim /lib/systemd/system/jenkins.service
User=root
Group=root
Environment="JAVA_OPTS=-Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"
root@jenkins:~# systemctl daemon-reload && systemctl start jenkins

#初次登录jenkins,需要copy密码黏贴到下面,后面安装推荐的插件,配置登录账号信息。





#安装插件后,重启jenkins服务。安装可选插件,配置邮件服务。



#配置任务,先配置shell命令方式来执行任务。




#配置脚本方式执行任务,需要把运行jenkins服务的root用户公钥copy到gitlab上,实现无密码登录拉取代码。


#jenkins产生秘钥对

root@jenkins:/data/scripts# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):

#拷贝公钥到gitlab服务器上

root@jenkins:~/.ssh# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDM9BVhM2FsuY+t5LqhZIKDZWM4eQ0j9qocFI87OEGeJ7Ns6QA4m8d+62Md9Jb3XbzfsrMIGY/DOkW/H9ww9hE9KP4y20DUU5lIeRnQIsfJecdCrcSkBy4gFDu4oSBVcg7k4GFXCNoOkNPu79u87PrIV4QWPul2aDGv+CQM/ITb9fE8smSmocxKgbjd7ewyMmh4ev067huqbuC9FJgh4lqmvHamFBPk+TfCGZAILqqohY+q/77KJ+lG2Wj77dbz/+pat/N65a1MHJxwHrD+5WI4F7eEHxhKH7f7EvWk6sk02K94Ym/neJV+K0B1FgNNeW8SRWlYP2KDwXsua7t9DNrknw79eJ39M11j8qhHUUSEM2o5xX6UJBczdQJud1sSHoDCV7NgcOI6lcd/nnZbetBx6tVyMJdECkLnuA+cVnfCxzfMpyRAl37gCfRxwASGKqj44hmdLnP6UiW4oJ0l1o/E/nNCwvMcUZDDXW+ZDQJL3Y32VC1ucPP8XyqJX0PodN8= root@jenkins

#通过git协议clone gitlab上的代码,成功

root@jenkins:/tmp# git clone git@192.168.159.130:primaryedu/app1.git
Cloning into 'app1'...
The authenticity of host '192.168.159.130 (192.168.159.130)' can't be established.
ECDSA key fingerprint is SHA256:BvlthaVudES3m4d6odiQUIuOFMCLcd4KBuGAB5K++jk.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.159.130' (ECDSA) to the list of known
.......
Unpacking objects: 100% (20/20), 4.46 KiB | 415.00 KiB/s, done.

#在jenkins上通过执行脚本拉取gitlab上代码,并copy到web1服务器nginx上

root@jenkins:/var/lib/jenkins/workspace/test-job1# cat /data/scripts/test.py
#!/bin/bash
#print("output for jenkins test")
cd /data/scripts/code/
rm -rf app1/
git clone git@192.168.159.130:primaryedu/app1.git
cd app1
scp index.html 192.168.159.132:/var/www/html/

在jenkins web界面上填入脚本路径,执行 成功


#在jenkins上配置,通过jenkins拉取gitlab上源码,并上传到web1服务器nginx服务,成功。
注意:把运行jenkins服务的root账号的private key复制到 Credentials里。之前gitlab上有jenkins服务器root用户的公钥,需要配对,才能正常拉取代码。


#登录web1服务器,查看nginx服务,有拉取到新的代码,并运行了。

docker-compose编排,gitlab安装和授权,git使用和jenkins安装和使用相关推荐

  1. Docker折腾记: (3)Docker Compose构建Gitlab,从配置(https,邮箱验证)到基本可用

    前言 gitlab 11.1内置了CI/CD,这个特性从gitlab 8+就开始有了,不过配置比较琐碎 经过几个大版本的迭代,现在已经简化了使用方式,也修复了一些坑,这个特性大大吸引了我; gitla ...

  2. Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  3. 【Spring Cloud 基础设施搭建系列】Spring Cloud Demo项目 使用Docker Compose编排Spring Cloud微服务

    文章目录 Docker Compose快速人门 入门示例 使用Docker Comose编排Spring Cloud微服务 使用Maven插件读取Dockerfile进行构建 使用Maven插件构建D ...

  4. 【ODOO】Docker Compose 编排ODOO应用

    Dockerfile Dockerfile 是一个用于构建自定义镜像的文本文件,文本内容包含了用于指导 Docker 创建自定义镜像的一系列指令,是用于创建镜像的蓝图. 这通常在将我们自己的程序打成D ...

  5. 安装Docker.v19和配置Docker Compose编排工具

    博文目录 一.Compose简介 二.安装Docker 1.安装19.03.9版本Docker 2.配置镜像加速 三.安装使用Docker Compose 1.Github下载Docker Compo ...

  6. Docker Compose编排

    目录 一.简介 二.安装部署compose 2.1 Docker compose 环境的安装 2.2 YAML 文件格式及编写注意事项 2.3 Docker Compose配置常用字段 2.4 Doc ...

  7. Docker Compose编排(写法格式及实验)

    目录 一.Docker Compose前言 二.Docker compose 的文件结构 1.docker compose配置常用字段 2.docker compose常用命令 三.使用compose ...

  8. Docker Compose方式安装GitLab

    文章目录 用Docker Compose方式安装GitLab 前提条件 一键自动化以Docker Compose方式安装GitLab GitLab Docker Compose文件 安装和运行GitL ...

  9. 从零开始一步一步搭建Ubuntu Server服务器、修改数据源、安装Docker、配置镜像加速器、Compose部署Gitlab服务

    场景 最终目的是使用Docker Compose部署一个Gitlab服务. 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程 ...

最新文章

  1. jQuery中ajax的4种常用请求方式
  2. 刷了三遍面试题仍拿不到offer?如何掌握AI技术面正确刷题姿势?
  3. win7系统出现蓝屏0x0000003b怎么解决
  4. 查看tensorflow版本以及路径:
  5. 使用jvisualvm通过JMX的方式监控远程JVM运行状况
  6. 硬盘播出系统_昌吉广播电视台中型多功能演播室系统概述
  7. 深度学习声纹识别_一种基于机器学习及深度学习的声纹降噪方法及系统与流程...
  8. css在透明的背景下显示白色字体
  9. 手机流量卡代理第一次做,要做好哪些准备?
  10. 在线 excel 产品技术调研
  11. 烘培赛道的2021:资本重押下,老字号向左,新秀向右?
  12. 7.3.1 B树及其基本操作
  13. 什么是光端机,什么是PDH光端机,什么是SDH,什么是SPDH
  14. Basic Concepts in Graphics and Architecture
  15. 如何使用JAVA代码生成一个简单的二维码
  16. Python test1
  17. 一直在路上 | 多位顶尖技术大咖入驻腾讯云最具价值专家
  18. 【LeetCode - 1229】安排会议日程
  19. 基于FFmpeg的视频播放器之十三:抓图
  20. 墨客科技执行董事袁英:MOAC区块链赋能实体产业的方案与实践

热门文章

  1. 企业数据无忧 飞客功不可没
  2. 【New Star】LeetCode 数组学习
  3. 2020最流行的Java构建和依赖管理工具:Maven
  4. bq27541 写入senc文件
  5. 网络营销工具:网上收集的30个常用SEO工具
  6. web浏览器阻止ActiveX控件
  7. 草图大师免费模型分享2022.03.10之草图溜溜
  8. 第一届LeetCode刷题打卡赢现金活动开始啦,助力每一位想拿大厂offer的小伙伴!
  9. 发表SCI或EI类英文文章的一些投稿经验
  10. 【第三方互联】8、创建新浪微博(sina)互联应用