使用docker images sonatype/nexus3來快速建立環境,nexus3是opensource,可自行編譯使用。不過有部份外掛套件是需要付費使用的,像是Azure Blob Storage,此時可以選擇付費使用Nexus3 pro版本。
建立docker-compose.yml (記得建立一個nexus-data目錄來存放blob資料)
version: "3.5"
services:
mariadb:
container_name: nexus3
image: sonatype/nexus3
environment:
TZ: Asia/Taipei
ports:
- "127.0.0.1:8081:8081"
volumes:
- ./nexus-data:/nexus-data
restart: unless-stopped
logging:
options:
max-size: 512M
# deploy:
# resources:
# limits:
#cpus: '0.50'
# memory: 1024M
啟動docker
sudo docker-compose up -d
設定virtualhost來對應Nexus3服務
<VirtualHost *:80>
ServerName nexus3.yourdomain
ProxyRequests off
ProxyPreserveHost On
ProxyPass "/" "http://127.0.0.1:8081/"
ProxyPassReverse "/" "http://127.0.0.1:8081/"
</VirtualHost>
取得admin預設密碼,來登入設定
nano nexus-data/admin.password
新增repository
選擇新增一個maven host及docker host
maven的使用方式
在maven安裝目錄裡,找到conf/settings.xml把帳密設定上去
<servers></servers>裡
<server>
<id>取一個名字</id>
<username>帳號</username>
<password>你的密碼</password>
</server>
example
<server>
<id>yslifesMaven</id>
<username>admin</username>
<password>iforgot</password>
</server>
然後在專案pom.xml加入
<repositories>
<repository>
<id>你serverId的名字</id>
<url>maven host的網址</url>
</repository>
</repositories>
example
<repositories>
<repository>
<id>yslifesMaven</id>
<url>https://你的domain/repository/yslifes</url>
</repository>
</repositories>
編譯專案時,就可以自動從private repositories取得library
怎麼push 自己的library可以google一下
push docker image
“docker login 建立private docker repository網址”時會出現問題,所以需要另外開port(在設定repository頁設定),我使用另一個方式設定另一個virtualhost來對應
<VirtualHost *:80>
ServerName docker.你的domain
ProxyRequests off
ProxyPreserveHost On
ProxyPass "/" "http://127.0.0.1:8081/repository/docker/"
ProxyPassReverse "/" "http://127.0.0.1:8081/repository/docker/"
</VirtualHost>
docker login docker.你的domain
然後把要上傳的image tag成
docker tag 你的image docker.你的domain/你的image:tag名稱
example
docker tag sonatype/nexus3 docker.你的domain/nexus3:v3
把image push到主機
docker push docker.你的domain/nexus3:v3
以上