zoukankan      html  css  js  c++  java
  • 基于Docker构建安装Git/GitLab,以及制作springboot工程镜像

    今天给大家分享的是《领先的开源自动化服务器Jenkins的应用实战》之基于Docker安装构建Git/GitLab版本控制与代码云存储的场所;使用Git管理项目,springboot工程制作镜像知识体系,欢迎大家一起阅读!

    Git/GitLab版本控制与代码云存储的场所

     

    免费开源的分布式版本控制系统

    本地离线存储:绝大多数操作都只需要访问本地文件和资源,不用连网,在本地磁盘上就保存着所有当前项目的历史更新,所以处理起来速度飞快。

    分布式:每一个 Git克隆 都是一个完整的文件库,含有全部历史记录和修订追踪能力,不依赖于网络连接或中心服务器。其最大特色就是“分支”及“合并”操作非常快速、简便。

    免费开源:安装基于Apache,Ruby等免费开源软件, 旨在快速高效地处理无论规模大小的任何软件工程 ,商业用户无任何限制,完全放心使用。

    安装启动docker

    1、安装docke

    # 1、yum 包更新到最新 
    yum update
    # 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 
    yum install -y yum-utils device-mapper-persistent-data lvm2
    # 3、 设置yum源
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    # 4、 安装docker,出现输入的界面都按 y 
    yum install -y docker-ce
    # 5、 查看docker版本,验证是否验证成功
    docker -v

    2、配置镜像加速器

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://8cqoh10g.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker

    3、安装私有仓库

    # 拉取镜像
    docker pull registry
    
    # 创建容器
    docker run -d -p 5000:5000 registry
    
    #配置私有仓库地址
    vim /etc/docker/daemon.json
    {
      "insecure-registries": ["192.168.200.133:5000"]
    }
    
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    #启动本地仓库容器
    docker start 容器ID

    4、访问私有仓库

    http://192.168.200.133:5000/v2/_catalog

    如果访问不到,关闭防火墙:

    systemctl stop firewalld

    docker下gitlab安装配置使用

    1、安装

    #查找Gitlab镜像
    docker search gitlab
    
    #gitlab镜像拉取
    docker pull gitlab/gitlab-ce
    
    #查看本地镜像
    docker images
    
    #本机建立的3个目录
    #为了gitlab容器通过挂载本机目录启动后可以映射到本机,然后后续就可以直接在本机查看和编辑了,不用再进容器操作
    #配置文件
    mkdir -p /home/gitlab/etc
    #数据文件
    mkdir -p /home/gitlab/data
    #日志文件
    mkdir -p /home/gitlab/logs
    
    #启动容器
    docker run --name='gitlab' -d 
     --publish 4443:443 --publish 8888:80 
     -v /home/gitlab/etc:/etc/gitlab 
     -v /home/gitlab/data:/var/opt/gitlab 
     -v /home/gitlab/logs:/var/log/gitlab 
    gitlab/gitlab-ce:latest
    
    #查看启动日志
    docker logs -f gitlab

    2、配置

    按上面的方式,gitlab容器运行没问题,但在gitlab上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。作为gitlab服务器,我们需要一个固定的URL访问地址,于是需要配置gitlab.rb(宿主机路径:/home/gitlab/config/gitlab.rb)

    #配置域名或IP
    
    #配置gitlab.rb 
    cd /home/gitlab/etc
    vim gitlab.rb 
    
    #配置http协议所使用的访问地址,不加端口号默认为80
    external_url 'http://192.168.200.133'
    
    #配置gitlab.yml
    cd /home/gitlab/data/gitlab-rails/etc
    vim gitlab.yml
    
    gitlab:
        ## Web server settings (note: host is the FQDN, do not include http://)
        host: 192.168.200.133
        port: 8888
        https: false
    

      

    3、初始化密码

    gitlab 默认管理用户是root

    登录:http://192.168.200.133:8888 登录修改root 的密码

    4、登录

    用户名 root 密码

    5、创建项目

    http-demo

    安装Git

    # 安装
    yum install -y git
    
    # 查看版本
    git version
    
    # git version 1.8.3.1

    使用Git管理项目

    1、使用idea从GitLab检出空项目

    项目地址:http://192.168.200.133:8888/root/http-demo.git

    2、复制项目并运行

    idea中运行项目并访问:http://127.0.0.1:10000/user/1

    3、提交代码到GitLab

    在工程根目录创建 .gitignore,此文件中记录了在提交代码时哪些文件或目录被忽略

    .idea/
    target/
    *.iml

    Springboot工程制作镜像

    1、SpringBoot运行Jar包

    使用maven的打包插件

    将下边的插件依赖拷贝到微服务工程中

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    使用maven打包并运行访问微服务工程

    java -jar http-demo-1.0-SNAPSHOT.jar

    2、创建Docker镜像

    在linux上新建一个目录,将上一步的jar包拷贝到Linux服务器,准备创建镜像。

    cd /home
    mkdir icoding

    测试jar包是否可以运行,执行:java -jar

    java -jar http-demo-1.0-SNAPSHOT.jar

    访问:http://192.168.200.133:10000/user/1

    在http-demo-1.0-SNAPSHOT.jar所在文件夹位置编写Dockerfile文件

    vim Dockerfile
    
    
    FROM java:8
    # VOLUME 指定了临时文件目录为/tmp。
    # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
    VOLUME /tmp 
    # 将jar包添加到容器中并更名为app.jar
    ADD http-demo-1.0-SNAPSHOT.jar app.jar 
    # 运行jar包
    RUN bash -c 'touch /app.jar'
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

    在Dockerfile文件所在目录创建镜像

    docker build -t http-demo:1.0-SNAPSHOT .

    查看镜像 

    docker images

    3、创建启动容器

    基于http-demo:1.0-SNAPSHOT镜像创建容器,容器名称为http-demo

    docker run -d -p 10000:10000 http-demo:1.0-SNAPSHOT

    容器创建成功,可通过docker ps -a命令查看

    4、访问页面

    http://192.168.200.133:10000/user/1

    5、 停止与删除

    停止容器 删除容器 删除镜像

    6、 使用maven构建镜像

    上边构建的过程是通过手工一步一步完成,maven提供docker-maven-plugin插件可完成从打包到构建镜像、构建容器等过程。

    1)编写pom_docker.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.5.RELEASE</version>
        </parent>
    
        <groupId>com.icoding</groupId>
        <artifactId>http-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>1.0.0</version>
                    <!--docker镜像相关的配置信息-->
                    <configuration>
                        <!--镜像名,这里用工程名-->
                        <imageName>${project.artifactId}</imageName>
                        <!--Dockerfile文件所在目录-->
     <dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory>
                        <!--TAG,这里用工程版本号-->
                        <imageTags>
                            <imageTag>${project.version}</imageTag>
                        </imageTags>
                        <!--构建镜像的配置信息-->
                        <resources>
                            <resource>
                                <targetPath>/</targetPath>
                                <directory>${project.build.directory}</directory>
        <include>${project.artifactId}-${project.version}.jar</include>
                            </resource>
                        </resources>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>

    )拷贝Dockerfile文件

    )在IDEA中提交修改的文件

    (4) lclone最新项目

    git clone http://192.168.200.133:8888/root/http-demo.git

    )打包构建镜像

    #进入工程目录
    cd http-demo

    #打包构建镜像
    mvn -f pom_docker.xml clean package -DskipTests docker:build

    (6)创建启动容器

    基于http-demo:1.0-SNAPSHOT镜像创建容器,容器名称为http-demo

    docker run -d -p 10000:10000 http-demo:1.0-SNAPSHOT

    容器创建成功,可通过docker ps -a命令查看

    (7) 访问页面

    http://192.168.200.133:10000/user/1


    欢迎大家关注艾编程公众号,回复“Jenkins
    ”看完整的视频和资料内容哦!
  • 相关阅读:
    struts2实现文件上传和下载
    Struts2中Action之ResultType
    初识Struts2
    Hibernate中get()和load()方法区别
    初识Hibernate框架,进行简单的增删改查操作
    memge和saveOrUpdate的区别
    apt-get install 出现could not open lock file /var/lib/dpkg/lock错误问题
    vscode工程目录文件及文件夹摘选
    C++引用
    内存分配区基本模型
  • 原文地址:https://www.cnblogs.com/icodingedu/p/13044798.html
Copyright © 2011-2022 走看看