nexus搭建maven私服,docker私服並與maven專案整合
目錄
實現功能:
- 通過nexus管理jar包
- 通過nexus管理docker映象
- 開發端機器遠端打包上傳jar
- 通過maven-docker外掛編譯為docker映象,部署到測試環境,並上傳的nexus私服
搭建環境
- ubantu17
已經安裝好docker 17.06.2-ce
搭建步驟
1. 通過docker安裝nexus
2. 實現nexus管理maven私服(打包上傳,拉取jar包等)
3. 實現nexus管理docker私服(打包上傳,拉取jar包等)
通過docker安裝nexus
## 啟動nexus
docker run -d -p 8081 :8081 -p 8082:8082 -p 8083:8083 --name nexus3 -v /home/nexus/nexus-data:/nexus-data --restart=always sonatype/nexus3
## -v /home/nexus/nexus-data:/nexus-data 將資料掛載到宿主機
## 8081:nexus3網頁端
## 8082:docker(hosted)私有倉庫,可以pull和push(後面實現docker的時候會詳細說明)
## 8083:docker(proxy)代理遠端倉庫,只能pull(後面實現docker的時候會詳細說明)
預設使用者名稱密碼:admin/admin123
實現nexus管理maven私服
nexus設定maven倉庫
預設情況下,nexus是提供了四個倉儲
1. maven-central 代理中央倉庫,從公網下載jar
2. maven-release 釋出版本內容(即自己公司發行的jar的正式版本)
3. maven-snapshots 釋出版本內容(即自己公司發行的jar的快照版本)
4. maven-public 以上三個倉庫的小組
開發端設定私服的連結地址
在conf中有個settings.xml,開始設定maven連結私服的
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 本地儲存路徑 -->
<localRepository>E:\Maven\Repository</localRepository>
<pluginGroups>
<pluginGroup>org.sonatype.plugins</pluginGroup>
</pluginGroups>
<proxies>
</proxies>
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>docker-hub</id>
<username>admin</username>
<password>admin123</password>
<configuration>
<email>[email protected]</email>
</configuration>
</server>
</servers>
<mirrors>
<mirror>
<id>nexusSnapashots</id>
<url>http://192.168.80.129:8081/repository/maven-public/</url>
<mirrorOf>public-snapshots</mirrorOf>
<interval>always</interval>
</mirror>
<mirror>
<id>nexusMirror</id>
<name>local repos</name>
<url>http://192.168.80.129:8081/repository/maven-public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexusRepository</id>
<!-- jar包倉庫配置 -->
<repositories>
<repository>
<id>nexusSnapashots</id>
<name>nexus-snapshots</name>
<url>http://192.168.80.129:8081/repository/maven-public/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<layout>default</layout>
<snapshotPolicy>always</snapshotPolicy>
</repository>
<repository>
<id>nexusMirror</id>
<name>nexus-snapshots</name>
<url>http://192.168.80.129:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<layout>default</layout>
<snapshotPolicy>always</snapshotPolicy>
</repository>
</repositories>
<!-- 外掛倉庫配置 -->
<pluginRepositories>
<pluginRepository>
<id>nexusMirror</id>
<name>nexus mirror</name>
<url>http://192.168.80.129:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexusRepository</activeProfile>
</activeProfiles>
</settings>
此時便可以實現maven的私服拉取操作了。還有一部分就是如何上傳呢?在自己的pom檔案中加上如下的內容
mvn deploy便可上傳
<distributionManagement>
<snapshotRepository>
<id>snapshots</id><!-- 這個id和settings.xml中的servier標籤下的對應 -->
<url>http://192.168.80.129:8081/repository/maven-snapshots/</url><!-- nexus的倉儲地址 -->
</snapshotRepository>
<repository>
<id>releases</id>
<url>http://192.168.80.129:8081/repository/maven-releases/</url>
</repository>
</distributionManagement>
實現nexus管理docker私服
nexus設定docker倉庫
- 倉庫型別
專案 | 詳細說明 |
---|---|
hosted | 本地儲存,像官方倉庫一樣提供本地私庫功能 |
proxy | 提供代理其他倉庫的型別 |
group | 組型別,可以組合多個倉庫為一個地址提供服務 |
- 建立docker-releases(hosted )
專案 | 詳細說明 |
---|---|
型別 | docker (hosted) |
Name | docker-releases |
Blob store | default |
Deployment policy | Allow redeploy |
- 建立docker-central(proxy)
專案 | 詳細說明 |
---|---|
型別 | docker (proxy) |
Name | docker-central |
Docker Index | Use Docker Hub |
Blob store | default |
- 建立docker-public(group)
專案 | 詳細說明 |
---|---|
型別 | docker (group) |
Name | docker-public |
HTTP Port | 8083 |
Member repositories | docker-central |
Member repositories | docker-releases |
Blob store | default |
docker服務的設定
Docker的私庫可以使用HTTP或者HTTPS,Nexus 3都予以支援,本文的方式採用HTTP方式,因此需要設定docker,在docker啟動前設定如下資訊是需要的
專案 | 詳細說明 |
---|---|
設定物件檔案 | /etc/docker/daemon.json |
設定內容 | insecure-registries |
詳情
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["192.168.80.129:8082","192.168.80.129:8083"],
"disable-legacy-registry": true
}
設定完成後重啟docker服務
root@ubuntu:/home/tianbocheng# service docker restart
## 重啟nexus服務
root@ubuntu:/home/tianbocheng# docker ps -a
root@ubuntu:/home/tianbocheng# docker restart 016a4a644432(nexus的CONTAINER ID)
- 驗證docker login
專案 | 詳細說明 |
---|---|
docker-release倉庫 | docker login -u admin -p admin123 192.168.80.129:8082 |
docker-cenreal倉庫 | docker login -u admin -p admin123 192.168.80.129:8083 |
驗證成功
root@ubuntu:/home/tianbocheng# docker login -u admin -p admin123 192.168.80.129:8082
Login Succeeded
root@ubuntu:/home/tianbocheng# docker login -u admin -p admin123 192.168.80.129:8083
Login Succeeded
root@ubuntu:/home/tianbocheng#
- docker-central(proxy)驗證
root@ubuntu:/home/tianbocheng# docker pull 192.168.80.129:8083/redis
Using default tag: latest
latest: Pulling from redis
b0568b191983: Pulling fs layer
6637dc5b29fe: Download complete
7b4314315f15: Pulling fs layer
2fd86759b5ff: Waiting
0f04862b5a3b: Waiting
2db0056aa977: Waiting
查了一下nexus的一些issue,發現有不少都是跟blob相關,看起來相關的小的問題還有一些在不斷的收拾中,但是不影響結果。 確認proxy倉庫,發現pull的alpine的3.5版本已然在proxy倉庫中儲存完畢,所以上面的unknown blob也確實沒有影響結果。
- docker-releases(hosted)驗證
檢視映象
root@ubuntu:/home/tianbocheng# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.80.129:8082/paascloud-eureka 1.0 ee8335f1e9f3 15 hours ago 643MB
mysql 5.7 5195076672a7 2 weeks ago 371MB
liumiaocn/nexus latest 3f2921de4b91 4 months ago 485MB
java 8 d23bdf5b1b1b 14 months ago 643MB
tag映象
root@ubuntu:/home/tianbocheng# docker tag mysql:5.7 192.168.80.129:8082/mysql:5.7
root@ubuntu:/home/tianbocheng# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.80.129:8082/paascloud-eureka 1.0 ee8335f1e9f3 15 hours ago 643MB
mysql 5.7 5195076672a7 2 weeks ago 371MB
192.168.80.129:8082/mysql 5.7 5195076672a7 2 weeks ago 371MB
liumiaocn/nexus latest 3f2921de4b91 4 months ago 485MB
java 8 d23bdf5b1b1b 14 months ago 643MB
push映象
root@ubuntu:/home/tianbocheng# docker push 192.168.80.129:8082/mysql:5.7
The push refers to a repository [192.168.80.129:8082/mysql]
c5479ef6e03d: Pushed
1df83efbc52b: Pushed
4b402dfbab7b: Pushing [=======> ] 38.28MB/256.4MB
14d83b80d542: Pushed
b0c77fd3841d: Pushed
317e578f94b9: Pushing [=================> ] 15.71MB/44.72MB
fbb39c7dedaf: Pushed
55d5d837463a: Pushed
f0f28cc0eea1: Pushed
813996252a80: Pushed
3358360aedad: Pushing [=========> ] 10.31MB/55.27MB
開發端設定私服的連結地址
docker服務端設定
由於開發段沒有docker環境,需要開啟遠端http訪問(不同版本作業系統,自行百度查詢docker如何開啟http訪問)
1. 建立/etc/systemd/system/docker.service.d目錄。
2. 建立一個/etc/systemd/system/docker.service.d/http-proxy.conf檔案。
3. 重新整理配置
4. 重啟docker服務
5. 驗證是否開啟
$ sudo mkdir /etc/systemd/system/docker.service.d
$ sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
$ docker -H tcp://127.0.0.1:2375 images
開發端pom.xml的設定
開發端設定引入maven-docker外掛,採用dockerfile的方式。
<properties>
<docker.host>http://192.168.80.129:2375</docker.host>
<docker.repository>192.168.80.129:8082</docker.repository>
</properties>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- 我的是spring boot專案,加入了boot打包的外掛(非boot專案不需要引入) -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- 新增docker-maven外掛 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<!-- docker.host就是docker服務的地址 -->
<dockerHost>${docker.host}</dockerHost>
<serverId>docker-hub</serverId>
<!-- docker.repository就是私服的地址 -->
<imageName>${docker.repository}/${project.artifactId}:${project.version}</imageName>
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<forceTags>true</forceTags>
</configuration>
</plugin>
</plugins>
</build>
新建dockerfile資料夾和Dockerfile
# Version 0.0.1
FROM java:8
ENV JVM_OPTS ''
RUN bash -c 'touch /app.jar'
EXPOSE 8761
ENTRYPOINT java ${JVM_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /paascloud-eureka.jar
執行命令即可
mvn clean package docker:build
mvn clean package docker:build -DpushImage
參考連結
相關推薦
nexus搭建maven私服,docker私服並與maven專案整合
目錄 實現功能: 通過nexus管理jar包 通過nexus管理docker映象 開發端機器遠端打包上傳jar 通過maven-docker外掛編譯為docker映象,部署到測試環境,並上傳的nexus私服 搭建環境 ubantu17
NodeJs實現以太坊錢包keystore生成,匯入私鑰,匯出私鑰,匯入keystore,匯出Keystore,簽名,轉賬,轉賬確認
Keythereum是一個用於生成,匯入和匯出以太坊金鑰的JavaScript工具。 這提供了一種在本地和Web錢包中使用同一帳戶的簡單方法。 它可用於可驗證和儲存錢包。 Keythereum使用相同的金鑰派生函式(PBKDF2-SHA256或scrypt),對稱密碼(AES-128
Docker-通過docker-maven-plugin外掛實現docker映象構建並自動釋出到遠端docker伺服器
我們知道,docker能實現應用打包隔離,實現快速部署和遷移。如果我們開發應用使用了spring cloud + spring boot架構,那麼,通過docker-maven-plugin實現快速構建映象併發布到遠端docker伺服器會非常方便。相關步驟參考如下: step1、開啟docker伺服器的tc
使用 Docker 安裝 Jenkins 並構建Maven專案
環境: Ubuntu 16.04 + Docker兩篇官方文件歸納為”一句話搞定“:docker run \ -u root \ --rm \ -d \ -p 8080:8080 \ -p 50000:50000 \ -v jenkins-data:/var/
後端分頁神器,mybatis pagehelper 在SSM與springboot專案中的使用
mybatis pagehelper想必大家都耳熟能詳了,是java後端用於做分頁查詢時一款非常好用的分頁外掛,同時也被人們稱為mybatis三劍客之一,下面 就給大家講講如何在SSM專案和springboot專案中使用mybatis pagehelper 一、myb
Maven學習(三):生命週期與maven外掛
一、maven 生命週期 (一)簡介 Maven強大的一個重要的原因是它有一個十分完善的生命週期模型(lifecycle),這個生命週期可以從兩方面來理解: 1、顧名思義,執行Maven的每個步驟都由它來定義的,這種預定義的預設行為使得我們使用Ma
Intellij idea14.4 新建maven web專案並與tomcat服務整合
一:File ->New Project,左邊選單選擇maven專案,右邊勾選Create from archetype,找到org.apache.maven.archetype:maven-archetype-webapp,這個是Maven專案的一個骨架,就好像住酒
1107_Linux系統下如何安裝Nexus(使用Nexus搭建Maven私服)-2.Nexus倉庫設定,手動更新索引,自動更新索引
Linux系統下如何安裝Nexus(使用Nexus搭建Maven私服)-2.Nexus倉庫設定,手動更新索引,自動更新索引 2018年08月27日 17:30:53 weixin_42828741 閱讀數:64 還未安裝的可閱讀以下文章: Linux系統下如何安裝Nexus(使用Nexus搭
如何安裝Nexus Repository Manager OSS 3.x,如何搭建管理Maven私服,win10、win7通用安裝詳解,附:錯誤解決方案。
今天搭建一個Maven私服花了不少功夫,查閱了很多安裝的帖子以及百度了很多錯誤解決方案,然後將所有的帖子精華部分,附上我的經驗來帶給大家一個特別詳細的安裝方案,所以該文章大部分可以說是總結別人帖子。話不多說,開始安裝: 1.下載 &nb
Docker安裝Nexus搭建Maven私服、部署引用jar包
docker run --restart="always" -d -p 8081:8081 --name nexus -v /opt/data/nexus-data:/nexus-data sonatype/nexus3 注意點:若出現許可權問題 chmod 777 nexus-
Windows下使用Nexus搭建Maven私服(安裝)
支持 blog 試用 prop 解壓 結束 factor repos name 一、下載Nexus 下載OSS最新版:https://www.sonatype.com/download-oss-sonatype 老版本:https://support.sonatype.
Windows 下Nexus搭建Maven私服
4.3 快照 激活 nap cti sha 基本 新增 項目 轉自:http://blog.csdn.net/fanyuna/article/details/40145827 1、 為什麽使用Nexus 如果沒有私服,我們所需的所有構件都需要通過mave
nexus搭建maven私服及私服jar包上傳和下載
ive 校驗 public 我們 賬號 依賴 detail 接下來 triangle nexus搭建maven私服及私服jar包上傳和下載 標簽: nexus管理maven庫snapshot 2017-06-28 13:02 844人閱讀 評論(0) 收
Nexus搭建Maven私服
gem 說明 原因 x86 copy href .com 3.x jar包 公司一般都有個自己的私服來管理各種jar包,原因大概有這麽3個,分別是: 1、有的公司不能訪問外網,只能通過私服來管理jar包和插件; 2、公司網速比較慢,通過公司的私服來獲取jar
【Maven】3.使用IntelliJ IDEA 使用本地搭建的maven私服,而不是使用默認的maven設置
apply dea rri ref http 而不是 tell .com .html 安裝Idea的教程:http://www.cnblogs.com/sxdcgaq8080/p/7641379.html 搭建maven私服的教程:http://www.cnblogs.co
ubuntu下使用Nexus搭建Maven私服
專業 執行命令 點擊 代理 都是 roo 系統文件 update in 連接 ubuntu下使用Nexus搭建Maven私服 1、私服簡介: 私服是架設在局域網的一種特殊的遠程倉庫,目的是代理遠程倉庫及部署第三方構件。有了私服之後,當 Maven 需要下載構件時,直接請求私
使用Maven下載依賴包及使用Nexus搭建私服
不存在 packaging policy jpg .com 庫類 rep oca 解壓 在項目的搭建過程中,所以很多時候我們需要上網去一個一個找項目的依賴包。這個過程確實是一個效率很低而且很讓人惱火的事情。 很多時候能找到對應的官網下載固然是好,但是大部分時候我們都只能在一
nexus 搭建 maven 私服
一. 下載並安裝nexus 1. 安裝brew /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” 2. 安裝nexus
maven系列-(六)使用Nexus搭建私服
前面的文章,在說到maven倉庫的時候,提到過maven私服的概念,maven私服屬於maven遠端倉庫的一種,是在區域網內搭建的一個私有的倉庫伺服器。一般情況下,如果是在一個組織內使用maven的話,都會有自己搭建的maven私服。使用maven私服可以降低中央倉庫的負荷,節省外網頻寬,加
使用nexus搭建maven私服
jar instance maven ati 右鍵 加入jar user 平時 tor 在日常開發中我們會經常使用的第三方jar包,而我們對jar包的管理往往是使用maven去做管理,但是有時候我們發現使用到的一些jar在阿裏的中央倉庫是找不到的,而且就算找到,下載速度