新項目構(gòu)建自動化docker部署第一步
1. 將打包的docker鏡像包發(fā)布到nexus私服上
需要準(zhǔn)備
- nexus3
- docker
- maven
上述安裝就不涉及了,直接進入主題
2. nexus上配置docker倉庫
- hosted:本地存儲扑媚,即同docker官方倉庫一樣提供本地私服功能
- proxy:提供代理其他倉庫的類型烦绳,如docker中央倉庫
-
group:組類型麻敌,實質(zhì)作用是組合多個倉庫為一個地址
-
指定docker倉庫名稱、指定一個端口8083來通過http的方式訪問倉庫、勾選是否支持docker API VI,然后點擊create repository 按鈕創(chuàng)建hosted倉庫
- 錄入proxy倉庫名稱付燥,然后在 Remote storage中輸入需要代理的鏡像倉庫地址,這里我們選用網(wǎng)易的鏡像地址:http://hub-mirror.c.163.com愈犹,因為docker 的中國境內(nèi)的倉庫地址有時候https://registry.docker-cn.com 有時不穩(wěn)定會出現(xiàn)連接超時键科,Docker Index 選擇Use Docker Hub
-
錄入group組名稱,然后錄入http端口號 8082漩怎,在Member repositories 中將 hosted 和proxy 從左左邊移到右邊勋颖,同時保證hosted在前,這樣才能在拉取鏡像的時候首先從本地拉取勋锤,如果拉取不到才從中央倉庫(遠(yuǎn)程)拉取
由于我們使用的時http而不是https 故需要在啟動參數(shù)文件中設(shè)置
vi /etc/docker/daemon.json饭玲,將ip:8082和ip:8083 添加到 insecure-registries 參數(shù)中,由于我們的遠(yuǎn)程倉庫地址為http://hub-mirror.c.163.com叁执,不為https 故同樣需要將該地址添加到insecure-registries參數(shù)中:"insecure-registries":["ip:8082","ip:8083","http://hub-mirror.c.163.com"]
重啟docker
systemctl daemon-reload
systemctl restart docker
3. 驗證
docker login ip:8082
docker login ip:8083
在登錄需要輸入登錄用戶名及密碼茄厘,即為你的nexus3的登錄用戶名及密碼
驗證proxy
docker pull ip:8083/redis
此docker私服倉庫中時沒有redis的鏡像的,故nexus3會從中央倉庫中去拉取鏡像谈宛,拉取成功之后次哈,查看nexus3的proxy倉庫發(fā)現(xiàn)已經(jīng)存在了redis鏡像
驗證hosted
tag鏡像:docker tag nginx:latest ip:8082/nginx:latest
push 鏡像:docker push ip:8082/nginx:latest
此時查看hosted倉庫發(fā)現(xiàn)已經(jīng)存nginx的鏡像了
4. 使用maven打包docker鏡像并推送到nexus3
- 配置maven插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${docker.plugin.version}</version>
<configuration>
<imageName>${docker.registry.url}:8083/bull3d/${project.artifactId}:${project.version}</imageName>
<dockerDirectory>${project.basedir}</dockerDirectory>
<serverId>docker-hub</serverId>
<dockerHost>${docker.registry.host}</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<registryUrl>${docker.registry.url}:8083</registryUrl>
<!-- <serverId>${docker.registry.url}</serverId>-->
<pushImage>true</pushImage>
</configuration>
</plugin>
- 配置settings.xml
<server>
<id>docker-hub</id>
<username>admin</username>
<password>123456</password>
</server>
在<pluginGroups>節(jié)點中添加
<pluginGroup>com.spotify</pluginGroup>
- 開啟docker遠(yuǎn)程調(diào)用
- vim /usr/lib/systemd/system/docker.service
在 ExecStart 追加:-H tcp://0.0.0.0:2375
如:ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock - 重啟docker
systemctl daemon-reload
systemclt restart docker
- 編譯打包項目并推送鏡像到docker及nexus
- 通過cmd 命令窗口進入到項目根目錄然后執(zhí)行:mvn clean compile package docker:build -DpushImage
- 登錄nexus 產(chǎn)看hosted倉庫發(fā)現(xiàn)鏡像已被成功推送到倉庫
- 使用 docker imges 產(chǎn)看鏡像已經(jīng)被成功拉取