前言

docker下安装 gitlab,nexus3


一、gitlab

GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。

1.GitLab ---- docker安装脚本

	#!/bin/bash
	#  gitlab 搭建脚本
	#搜索 gitlab 
	docker search gitlab-ce-zh
	# 汉化社区版
	docker pull twang2218/gitlab-ce-zh:11.1.4
	#创建gitlab映射文件夹
	mkdir -p /home/docker/gitlab/config /home/docker/gitlab/logs /home/docker/gitlab/data
	
	#自定义网络,从而让容器运行于独立的网络中,区别于默认网桥。
	docker network create gitlab-net
	#启动容器
	docker run -d \
	    --restart=always \
	    --name gitlab-kiko \
	    --privileged=true \
	    --network gitlab-net \
	    -p 20443:443 \
	    -p 20022:22 \
	    -p 20080:80 \
	    -p 28080:8080 \
	    -v /volume1/docker/gitlab/config:/etc/gitlab \
	    -v /volume1/docker/gitlab/logs:/var/log/gitlab \
	    -v /volume1/docker/gitlab/data:/var/opt/gitlab \
	    twang2218/gitlab-ce-zh:latest

2.gitlab常用命令

重新加载配置:gitlab-ctl reconfigure

重启服务:gitlab-ctl restart

启动服务:gitlab-ctl start

停止服务:gitlab-ctl stop

日志路径: /var/log/gitlab

查看所有日志:gitlab-ctl tail

查看nginx日志:gitlab-ctl tail nginx/gitlab_access.log

查看指数据库日志:gitlab-ctl tail postgresql

3.Gitlab 生成 SSH Keys

1. 打开 Git Bash
2. 输入生成对应邮箱的ssh keys ==> ssh-keygen -t rsa -C "kikock@qq.com"
3. id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。  
4. 登陆GitLab,打开“settings”,“SSH Keys”页面
5. 点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容

4.Gitlab 配置文件

配置文件下载地址

配置文件变动内容:
external_url 当前服务器ip地址
增加邮箱配置
添加ip白名单
优化启动,实现2g内存可运行服务


二、nexus3

Nexus3是一个仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问

1.nexus3---- docker安装脚本

	#!/bin/bash
	#  nexus3 搭建脚本
	
	#搜索 nexus3 
	docker search nexus3
	
	# 官方镜像
	docker pull sonatype/nexus3
	
	#创建nexus3映射文件夹
	mkdir -p /usr/local/docker/nexus3/data
	# 增加权限
	chown -R 200 /usr/local/docker/nexus3/data
	
	#自定义网络,从而让容器运行于独立的网络中,区别于默认网桥。
	
	docker network create nexus-net
	#默认网络模式
	#28082端口是用于host镜像仓库的服务端口
	#28083端口用户group镜像仓库的服务端口
	#28081 端口是nexus的服务端口
	##参数说明  -d 后台运行容器  -p 指定映射端口号 -v 映射目录
	# -hostname 自己安装gitlab的服务机的IP地址
	docker run -d \
	    --restart=always \
	    --name nexus3 \
	    --network nexus-net \
	    --privileged=true \
	    -p 28081:8081 \
	    -p 28082:8082 \
	    -p 28083:8083 \
	    -v /usr/local/docker/nexus3/data:/nexus-data \
	    sonatype/nexus3
	

2.nexus3----仓库创建

  Group:这是一个仓库集合,内部设置了多个仓库,自由配置引用jar包顺序。
  Hosted:私有仓库,内部项目的发布仓库,专门用来存储我们自己生成的jar文件
  Proxy:代理类型,从远程中央仓库中寻找数据的仓库,可配置阿里云maven仓库等

先创建Proxy,远程中央仓库(一般用阿里仓库)
在这里插入图片描述

再创建Hosted,本地存储。像官方仓库一样提供本地私库功能
在这里插入图片描述
创建group仓库,一般配置本地仓库在前,代理阿里仓库在后面
在这里插入图片描述

3.nexus3----maven配置+本地项目pom.xml

maven配置文件–增加参数配置

    <servers>
        <server>
            <id>nexus-kikock</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>

本地项目的pom.xml中加上以下配置

		 <!--maven 私有库配置-->
<distributionManagement>
        <repository>
                <!--这里的id要和maven中的settings.xml的id一致,这样才能识别依赖做坐标-->
            <id>nexus-kikock</id>
            <name>kikock host nexus</name>
              <!--配置jar包上传地址-->
            <url>http://192.168.64.88:28081/repository/kikock-hosted/</url>
        </repository>
    </distributionManagement>
    <!--本地引用仓库配置-->
    <repositories>
        <repository>
            <!--这里的id要和maven中的settings.xml的id一致,这样才能识别依赖做坐标-->
            <id>nexus-kikock</id>
            <name>Nexus Repository</name>
                 <!--配置jar包下载仓库,一般配置group类型仓库-->
            <url>http://192.168.64.88:28081/repository/kikock-group/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>

maven执行 deploy 命令上传jar包到私有库,引用jar包(略)

4.nexus3----gradle配置


/配置下载Maven仓库
        repositories {
      			 // mavenLocal()  按以下顺序去查找本地的Maven仓库:
      		  // USER_HOME/.m2/settings.xml -> M2_HOME/conf/settings.xml -> USER_HOME/.m2/repository
               mavenLocal()
			  //配置jar包下载仓库,一般配置group类型仓库
              maven { url 'http://192.168.64.88:28081/repository/kikock-group/'}
	         //mavenCentral() Sonatype公司提供的中央库 : http://central.maven.org/maven2
	         //jcenter() JFrog公司提供的仓库 : http://central.maven.org/maven2
	         //google() Google公司提供的仓库 : https://maven.google.com
	         //一般替换为镜像仓库,本地仓库已经存在镜像仓库也可以不用
			 maven { url 'https://plugins.gradle.org/m2/' }
			 maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
			 maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
			 maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
        }

/上传Maven仓库
	//打包源代码
	task sourcesJar(type: Jar, dependsOn: classes) {
	    classifier = 'sources'
	    from sourceSets.main.allSource
	}
	
	artifacts {
	    archives sourcesJar
	}
	
	//如果希望gradle install,安装到.m2本地仓库,参考下面的内容
	install {
	    repositories.mavenInstaller {
	        pom.version = "版本号"
	        pom.artifactId = "jar包id"
	        pom.groupId = "jar包group"
	    }
	}
	
	//上传到nexus
	uploadArchives {
	    repositories {
	        mavenDeployer {
 				//配置jar包上传地址
	            repository(url: 'http://192.168.64.88:28081/repository/kikock-hosted/') {
	                authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
	            }
			        pom.version = "版本号"
			        pom.artifactId = "jar包id"
			        pom.groupId = "jar包group"
	        }
	    }
	    return 'Success'
	}