基於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
”看完整的視頻和資料內容哦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM