• maven 3.8.1 版本之后,在 settings.xml 中通过配置 mirror 禁用了不安全的 http 链接,默认情况下必须使用 https 的仓库地址。

10.200.17.45 测试机

1
docker run -d -p 8093:8081  -u root --name=nexus-lcf --privileged=true -v /data/nexus:/nexus-data -e INSTALL4J_ADD_VM_PARAMS="-Xms256m -Xmx512m -XX:MaxDirectMemorySize=1024m" sonatype/nexus3:latest
1
docker run -d -p 8094:8443 -p 8093:8081  -u root --name=nexus-https --privileged=true -v /data/nexus:/nexus-data -e INSTALL4J_ADD_VM_PARAMS="-Xms256m -Xmx512m -XX:MaxDirectMemorySize=1024m" nexus-https-2022:latest
  • -d
  • -u root –privileged=true
  • -p 8093:8081
  • –name=nexus-lcf
  • -v /data/nexus-https-lcf:/nexus-data
  • -e INSTALL4J_ADD_VM_PARAMS=”-Xms256m -Xmx512m -XX:MaxDirectMemorySize=1024m”

10.163.204.79

Nexus部署

1
2
docker pull docker.io/sonatype/nexus3    // 拉取最新nexus镜像
docker stop 7d6824229a9a && docker rm 7d6824229a9a // 停掉旧容器
1
2
3
4
5
6
7
8
9
10
11
12
13
docker run -d        
-p 80:8081
--name=nexus
--restart=always
--ulimit nofile=655360
--ulimit memlock=-1
--memory=16G
--memory-swap=-1
--cpuset-cpus='0-7'
-eINSTALL4J_ADD_VM_PARAMS="-Xms4g -Xmx4g -XX:MaxDirectMemorySize=6717M -Duser.timezone=Asia/Shanghai"
-v /etc/localtime:/etc/localtime
-v /data/nexus:/nexus-data
sonatype/nexus3:latest

升级https

1
2
3
4
mv _.haier.net.* ~/

// 这里需要输入密码 用password,如果不用这个,需要修改镜像里的${jetty.etc}/jetty-https.xml,具体操作参考百度。
openssl pkcs12 -export -out keystore.pkcs12 -inkey _.haier.net.key -in _.haier.net.crt
1
2
3
4
5
6
FROM sonatype/nexus3:[tag]
USER root
COPY keystore.pkcs12 /keystore.pkcs12
RUN keytool -v -importkeystore -srckeystore keystore.pkcs12 -srcstoretype PKCS12 -destkeystore keystore.jks -deststoretype JKS -storepass password -srcstorepass password &&\
cp keystore.jks /opt/sonatype/nexus/etc/ssl/
USER nexus

基于此nexus版本OSS 3.38.1-01

在最新的nexus镜像的基础上构建,找不到keystore.pkcs12

8da03e408fae

原因是最新版本的镜像指定WORKDIR /opt/sonatypeCOPY keystore.pkcs12 /keystore.pkcs12导致RUN keytool时在工作目录下找不到文件。
keystore.pkcs12拷贝到工作目录下即可。

1
2
3
docker build . -t nexus-https -f jdk_dockerfile
docker build . -t nexus-https-2022-3.57 -f jdk_dockerfile
docker build . -t nexus-https-2022-3.59.0 -f jdk_dockerfile
1
docker run -d         -p 80:8081         --name=nexus         --restart=always         --ulimit nofile=655360         --ulimit memlock=-1         --memory=16G     --memory-swap=-1         --cpuset-cpus='0-7'         -eINSTALL4J_ADD_VM_PARAMS="-Xms4g -Xmx4g -XX:MaxDirectMemorySize=6717M -Duser.timezone=Asia/Shanghai"         -v /etc/localtime:/etc/localtime         -v /data/nexus:/nexus-data         sonatype/nexus3:latest
1
2
3
4
5
6
7
docker run -d         -p 80:8081     -p 443:8443    --name=nexus         --restart=always         --ulimit nofile=655360         --ulimit memlock=-1         --memory=16G         --memory-swap=-1         --cpuset-cpus='0-7'         -eINSTALL4J_ADD_VM_PARAMS="-Xms4g -Xmx4g -XX:MaxDirectMemorySize=6717M -Duser.timezone=Asia/Shanghai"         -v /etc/localtime:/etc/localtime         -v /data/nexus:/nexus-data         nexus-https:latest

# nexus 3.57.1-01
docker run -d -p 80:8081 -p 443:8443 --name=nexus --restart=always --ulimit nofile=655360 --ulimit memlock=-1 --memory=16G --memory-swap=-1 --cpuset-cpus='0-7' -eINSTALL4J_ADD_VM_PARAMS="-Xms4g -Xmx4g -XX:MaxDirectMemorySize=6717M -Duser.timezone=Asia/Shanghai -Djava.util.prefs.userRoot=/opt/sonatype/sonatype-work/nexus3/javaprefs" -v /etc/localtime:/etc/localtime -v /data/nexus:/nexus-data nexus-https-2022-3.57:latest

# nexus 3.59.0
docker run -d -p 80:8081 -p 443:8443 --name=nexus --restart=always --ulimit nofile=655360 --ulimit memlock=-1 --memory=16G --memory-swap=-1 --cpuset-cpus='0-7' -eINSTALL4J_ADD_VM_PARAMS="-Xms4g -Xmx4g -XX:MaxDirectMemorySize=6717M -Duser.timezone=Asia/Shanghai -Djava.util.prefs.userRoot=/opt/sonatype/sonatype-work/nexus3/javaprefs" -v /etc/localtime:/etc/localtime -v /data/nexus:/nexus-data nexus-https-2022-3.59.0:latest
1
2
3
4
5
6
7
8
9
10
11
12
# Jetty section
application-port-ssl=8443
application-port=8081
application-host=0.0.0.0
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml,${jetty.etc}/jetty-https.xml
nexus-context-path=/${NEXUS_CONTEXT}

#Nexus section
nexus-edition=nexus-pro-edition
nexus-features=\
nexus-pro-feature
nexus.clustered=false
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
docker run -d        
-p 80:8081
-p 443:8443
--name=nexus
--restart=always
--ulimit nofile=655360
--ulimit memlock=-1
--memory=16G
--memory-swap=-1
--cpuset-cpus='0-7'
-e INSTALL4J_ADD_VM_PARAMS="-Xms4g -Xmx4g -XX:MaxDirectMemorySize=6717M -Duser.timezone=Asia/Shanghai"
-v /etc/localtime:/etc/localtime
-v /data/nexus:/nexus-data
nexus-https:latest

docker参数
–name 指定docker容器的名称
–net=host 使用host网络模式(和宿主机一个网络)
–restart always docker 异常退出后自动重启
–volume / -v 挂载本地目录,格式 /src:/dst
-e 指定docker启动后环境变量(env)
–privileged 让docker可以拥有root权限
ulimit nofile 系统文件句柄打开数量限制
ulimit memlock 最大锁定内存地址空间,-1表示不限制
–memory 限制docker内存
–memory-swap 限制docker虚拟内存,-1 为不限制,共用宿主机swap
–cpuset-cpus 指定docker绑定的CPU
TERM=dumb 让docker里面可以执行top命令

磁盘扩容

nexus挂载目录/data