sonatype-nexus3
などの各種レポジトリを管理できる
sonatype-nexus3 Docker Hub
amd64のみ
Maven リポジトリ Help
各種コンテナ環境での実行
Docker / Podman
Podman Pod
Docker Compose / Podman Compose
Docker/Podman build image
RaspberryPi などではimageがないのでbuild してみるがOSがamd64しかないRedHat UBI8なので不可
Docker / Podman
単純な実行
$ mkdir nexus3
$ cd nexus3
$ podman volume create nexus-data
$ podman run -d --name nexus3 -e INSTALL4J_VM_PARAMS="-Xms2000m -Xmx2000m" -p 8081:8081 -v ./nexus-data:/nexus-data docker.io/sonatype/nexus3:latest
パラメータは適当に指定した
Docker 等コンテナ用には別途httpd で中継が必要
$ podman run -d --name httpd -v ./www:/usr/local/apache2/htdocs/ httpd:latest
Podman Pod
Podman で Kubernetes YAML ファイルで利用する
$ podman kube generate nexus3 -f nexu3.yaml
で出力したKubernetes YAMLファイルを利用する
RaspberryPi でVOLUME nexus-data を指定して出力した例
code:nexus3.yaml
# Save the output of this file and use kubectl create -f to import
# it into Kubernetes.
#
# Created with podman-4.3.1
# NOTE: If you generated this yaml from an unprivileged and rootless podman container on an SELinux
# enabled system, check the podman generate kube man page for steps to follow to ensure that your pod/container
# has the right permissions to access the volumes added.
---
apiVersion: v1
kind: Pod
metadata:
annotations:
io.kubernetes.cri-o.TTY/nexus3: "false"
io.podman.annotations.autoremove/nexus3: "FALSE"
io.podman.annotations.init/nexus3: "FALSE"
io.podman.annotations.privileged/nexus3: "FALSE"
io.podman.annotations.publish-all/nexus3: "FALSE"
org.opencontainers.image.base.digest/nexus3: sha256:475b55af17c769d0ecd1aaf901817e67d82d0e5b8e3b7212f941d304
org.opencontainers.image.base.name/nexus3: registry.access.redhat.com/ubi8/ubi-minimal:latest
creationTimestamp: "2024-06-29T15:24:32Z"
labels:
app: nexus3-pod
name: nexus3-pod
spec:
automountServiceAccountToken: false
containers:
- env:
- name: INSTALL4J_VM_PARAMS
value: -Xms2000m -Xmx2000m
image: docker.io/sonatype/nexus3:latest
name: nexus3
ports:
- containerPort: 8081
hostPort: 8081
securityContext:
capabilities:
drop:
- CAP_MKNOD
- CAP_NET_RAW
- CAP_AUDIT_WRITE
volumeMounts:
- mountPath: /nexus-data
name: nexus-data-pvc
enableServiceLinks: false
volumes:
- name: nexus-data-pvc
persistentVolumeClaim:
claimName: nexus-data
Pod名 nexus3-pod
コンテナ名 nexus3
YAML出力用に作ったコンテナを停止 削除 たぶん
$ podman container stop nexus3
$ podman rm nexus3
Pod登録、実行
$ podman kube play nexus3.yaml
Pod停止と開始
$ podman pod stop nexus3-pod
$ podman pod start nexus3-pod
Docker Compose / Podman Compose
Compose用ファイルを作成する場合
code:compose.yaml
services:
nexus:
image: docker.io/sonatype/nexus3
environment:
INSTALL4J_ADD_VM_PARAMS: "-Xms2000m -Xmx2000m"
ports:
- "8081:8081"
volumes:
- ./nexus-data:/nexus-data
オプションなしだとメモリ不足になるので INSTALL4J_ADD_VM_PARAMS は必須かもしれない。
ディスクも充分に空いていること。
nexus-data フォルダを作成。UIDは200がいいのかも。WindowsではUIDなど特に設定しなくても使えた。
podman compose up -d
初期 admin のパスワードは nexus-data/admin.password ファイルに記載されている。2分くらい有効なのか?
実行後
admin のパスワードは nexus-data/admin.password の中にあり 起動後3分限定くらいで確認できる
$ podman exec -it nexus3 bash cat /nexus-data/admin.password
要所
admin
ユーザの作成
歯車アイコンから左のSecurity Users
Create local user
Roles で nx-admin を付けると管理者になる