1、docker-compose部署nexus
docker-compose
version: '3'
services:
nexus:
restart: always
image: sonatype/nexus3:3.29.0
container_name: nexus
ports:
- "8081:8081"
volumes:
- /data/nexus/data:/nexus-data
mkdir -p /data/nexus/data #按需修改
# 目录权限
chmod -R 777 /data/nexus/data
# start
dockr-compose up -d
# stop
docker-compose down
ps:注意目录权限问题及默认最低配置
2、解决因内存不足导致启动失败(不建议使用,尽量满足其最低配置要求)
默认配置
JVM Heap | JVM Direct | Host Physical/RAM | |
---|---|---|---|
Minimum ( default ) | 2703MB | 2703MB | 8GB |
Maximum | 4GB | (host physical/RAM * 2/3) - JVM max heap | no limit |
General Memory Guidelines
- minimum physical/RAM memory on the host 8GB
- minimum heap ( -Xms ) must equal set maximum heap ( -Xmx )
- minimum heap size 2703MB
- maximum heap size <= 4GB
- minimum direct memory ( -XX:MaxDirectMemorySize ) size 2703MB
- minimum unallocated host physical/RAM memory should be no less than 1/3 of total physical RAM to allow for virtual memory swap
- max heap + max direct memory <= host physical/RAM * 2/3
总结:至少需要4核8G,我们可以自行修改bin目录中的nexus.vmoptions文件来减少内存需求,因为我们使用docker部署,所以我们可以基于官方镜像来制作我们需要的镜像
nexus.vmoptions默认的配置
-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=../sonatype-work/nexus3/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf
-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties
-Dkaraf.data=../sonatype-work/nexus3
-Dkaraf.log=../sonatype-work/nexus3/log
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
-Dkaraf.startLocalConsole=false
-Djava.endorsed.dir=lib/endorsed
查看官方docker镜像配置内存的方式为
所以我们可以自定义Dockfile文件来修改此镜像配置(我的服务器配置为2核2G)
Dockerfile
vi Dockerfile
FROM sonatype/nexus3:3.37.2
ENV INSTALL4J_ADD_VM_PARAMS="-Xms256m -Xmx256m -XX:MaxDirectMemorySize=512m -Djava.util.prefs.userRoot=/nexus-data/javaprefs"
docker build -t local/nexus3:3.37.2 .
修改docker-compose.yml文件的镜像
version: '3'
services:
nexus:
restart: always
image: local/nexus3:3.37.2
container_name: nexus
ports:
- "8081:8081"
volumes:
- /data/nexus/data:/nexus-data
mkdir -p /data/nexus/data # 位置按需修改
# 目录权限
chmod -R 777 /data/nexus/data
# start
dockr-compose up -d
# top
docker-compose down