nexus 部署与安装

本贴最后更新于 555 天前,其中的信息可能已经沧海桑田

Ubuntun 22.04

安装 Podman4

ubuntu_version='22.04' key_url="https://provo-mirror.opensuse.org/repositories/devel:/kubic:/libcontainers:/unstable/xUbuntu_${ubuntu_version}/Release.key" sources_url="https://provo-mirror.opensuse.org/repositories/devel:/kubic:/libcontainers:/unstable/xUbuntu_${ubuntu_version}" echo "deb $sources_url/ /" | tee /etc/apt/sources.list.d/devel:kubic:libcontainers:unstable.list curl -fsSL $key_url | gpg --dearmor | tee /etc/apt/trusted.gpg.d/devel_kubic_libcontainers_unstable.gpg > /dev/null apt update apt install podman

开机自启动

systemctl enable --now podman-restart podman.socket

容器部署

前置任务

网络部署

podman network create web podman pod create --net web -p 80:80 -p 443:443 -p 8080:8080 nexus

部署 traefik

创建 acme.json 并正确给予权限

mkdir -p /data/traefik/config touch /data/traefik/config/acme.json chmod 0600 /data/traefik/config/acme.json

运行 traefik

podman run --name=traefik -d \ --replace \ --restart always \ --pod nexus \ --health-cmd="traefik healthcheck --ping" \ --health-interval=10s \ --health-timeout=3s \ --health-retries=3 \ -v /run/podman/podman.sock:/var/run/docker.sock:z \ -v /data/traefik/config/acme.json:/config/acme.json:z \ dockerproxy.com/rapidfort/traefik:v2.9.10 \ --ping \ --api.insecure=true \ --providers.docker=true \ --entrypoints.web.address=":80" \ --entrypoints.websecure.address=":443" \ --entrypoints.web.http.redirections.entryPoint.to=websecure \ --entrypoints.web.http.redirections.entryPoint.scheme=https \ --certificatesresolvers.le.acme.email=admin@admin.local \ --certificatesresolvers.le.acme.storage=/config/acme.json \ --certificatesresolvers.le.acme.tlschallenge=true

部署 portainer

创建分卷

mkdir -p /data/portainer-data podman volume create --opt type=bind --opt device=/data/portainer-data portainer-data

部署

podman run --name=portainer -d \ --replace \ --restart always \ --pod nexus \ --health-cmd="wget --no-check-certificate -O /dev/null --no-verbose --tries=3 --spider --header='Content-Type:application/json' http://127.0.0.1:9000/api/system/status || exit 1" \ --health-interval=10s \ --health-timeout=3s \ --health-retries=3 \ -v /run/podman/podman.sock:/var/run/docker.sock:z \ -v portainer-data:/data \ -l traefik.enable=true \ -l traefik.http.routers.portainer.rule=Host\(\`portainer.nexus.juminfo.org\`\) \ -l traefik.http.routers.portainer.entrypoints=web,websecure \ -l traefik.http.services.portainer.loadbalancer.server.port=9000 \ -l traefik.http.routers.portainer.tls=true \ -l traefik.http.routers.portainer.service=portainer \ --privileged \ --expose=9000 \ dockerproxy.com/portainer/portainer-ce:linux-amd64-2.19.1-alpine \ -H unix:///var/run/docker.sock

部署核心项目

编译打包 nexus

  • 这里添加 rust 的支持
git clone https://github.com/bguerin/nexus-repository-cargo.git cd nexus-repository-cargo cat > build.sh <<EOF builder=$(buildah from docker.io/library/maven:3-jdk-8-alpine) buildah copy $builder . /nexus-repository-cargo buildah run --network=host --mount=type=cache,target=/root/.m2 $builder apk add --no-cache git buildah run --network=host --mount=type=cache,target=/root/.m2 --workingdir /nexus-repository-cargo $builder mvn clean package -PbuildKar nexus3=$(buildah from docker.io/sonatype/nexus3:3.61.0) builder_path=$(buildah mount $buidler) nexus_path=$(buildah mount $nexus3) cp -av $builder_path/nexus-repository-cargo/target/nexus-repository-cargo-*.kar $nexus_path/opt/sonatype/nexus/deploy/ buildah umount $builder buildah umount $nexus3 buildah commit $nexus3 docker.io/ssfdust/nexus3-cargo:3.61.0 buildah rm $nexus3 buildah rm $builder EOF buildah unshare bash build.sh

部署 nexus

podman run -d --name nexus-server \ --replace \ --restart=always \ --expose=8081 \ --expose=8085 \ --pod nexus \ -l traefik.enable=true \ -l traefik.http.routers.nexus.rule=Host\(\`nexus-server.juminfo.org\`\) \ -l traefik.http.routers.nexus.entrypoints=websecure \ -l traefik.http.services.nexus.loadbalancer.server.port=8081 \ -l traefik.http.routers.nexus.tls=true \ -l traefik.http.routers.nexus.service=nexus \ -l traefik.http.routers.docker.rule=Host\(\`docker-nexus.juminfo.org\`\) \ -l traefik.http.routers.docker.entrypoints=websecure \ -l traefik.http.services.docker.loadbalancer.server.port=8085 \ -l traefik.http.routers.docker.tls=true \ -l traefik.http.routers.docker.service=docker \ docker.io/ssfdust/nexus3-cargo:3.61.0

使用

Pypi

需要指定 registrytrusted-host

npm

指定 registry 即可使用

Docker

需要指定 insecure

dnf

需要在 /etc/yum.conf 中的 [main] 模块下添加 sslverify=false

  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    494 引用 • 928 回帖 • 2 关注
  • Nexus
    13 引用 • 20 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...