docker-compose编排,gitlab安装和授权,git使用和jenkins安装和使用
一,基于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安装和使用相关推荐
- Docker折腾记: (3)Docker Compose构建Gitlab,从配置(https,邮箱验证)到基本可用
前言 gitlab 11.1内置了CI/CD,这个特性从gitlab 8+就开始有了,不过配置比较琐碎 经过几个大版本的迭代,现在已经简化了使用方式,也修复了一些坑,这个特性大大吸引了我; gitla ...
- Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- 【Spring Cloud 基础设施搭建系列】Spring Cloud Demo项目 使用Docker Compose编排Spring Cloud微服务
文章目录 Docker Compose快速人门 入门示例 使用Docker Comose编排Spring Cloud微服务 使用Maven插件读取Dockerfile进行构建 使用Maven插件构建D ...
- 【ODOO】Docker Compose 编排ODOO应用
Dockerfile Dockerfile 是一个用于构建自定义镜像的文本文件,文本内容包含了用于指导 Docker 创建自定义镜像的一系列指令,是用于创建镜像的蓝图. 这通常在将我们自己的程序打成D ...
- 安装Docker.v19和配置Docker Compose编排工具
博文目录 一.Compose简介 二.安装Docker 1.安装19.03.9版本Docker 2.配置镜像加速 三.安装使用Docker Compose 1.Github下载Docker Compo ...
- Docker Compose编排
目录 一.简介 二.安装部署compose 2.1 Docker compose 环境的安装 2.2 YAML 文件格式及编写注意事项 2.3 Docker Compose配置常用字段 2.4 Doc ...
- Docker Compose编排(写法格式及实验)
目录 一.Docker Compose前言 二.Docker compose 的文件结构 1.docker compose配置常用字段 2.docker compose常用命令 三.使用compose ...
- Docker Compose方式安装GitLab
文章目录 用Docker Compose方式安装GitLab 前提条件 一键自动化以Docker Compose方式安装GitLab GitLab Docker Compose文件 安装和运行GitL ...
- 从零开始一步一步搭建Ubuntu Server服务器、修改数据源、安装Docker、配置镜像加速器、Compose部署Gitlab服务
场景 最终目的是使用Docker Compose部署一个Gitlab服务. 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程 ...
最新文章
- jQuery中ajax的4种常用请求方式
- 刷了三遍面试题仍拿不到offer?如何掌握AI技术面正确刷题姿势?
- win7系统出现蓝屏0x0000003b怎么解决
- 查看tensorflow版本以及路径:
- 使用jvisualvm通过JMX的方式监控远程JVM运行状况
- 硬盘播出系统_昌吉广播电视台中型多功能演播室系统概述
- 深度学习声纹识别_一种基于机器学习及深度学习的声纹降噪方法及系统与流程...
- css在透明的背景下显示白色字体
- 手机流量卡代理第一次做,要做好哪些准备?
- 在线 excel 产品技术调研
- 烘培赛道的2021:资本重押下,老字号向左,新秀向右?
- 7.3.1 B树及其基本操作
- 什么是光端机,什么是PDH光端机,什么是SDH,什么是SPDH
- Basic Concepts in Graphics and Architecture
- 如何使用JAVA代码生成一个简单的二维码
- Python test1
- 一直在路上 | 多位顶尖技术大咖入驻腾讯云最具价值专家
- 【LeetCode - 1229】安排会议日程
- 基于FFmpeg的视频播放器之十三:抓图
- 墨客科技执行董事袁英:MOAC区块链赋能实体产业的方案与实践