建立maven及docker private repositories

使用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

以上

發表迴響