一、Nexus
Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。Nexus 使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过m2eclipse与Eclipse集成使用。Nexus支持WebDAV与LDAP安全身份认证。
二、部署规划
服务器IP | 192.168.113.48 |
---|---|
端口 | 8931 |
安装目录 | /home/work/docker-nexus |
数据映射目录 | /home/work/docker-nexus/data |
三、安装Nexus
-
创建安装目录,进入到安装目录中编辑并保存docker-compose.yml文件
vim docker-compose.yml
version: '3' services: nexus: image: 'sonatype/nexus3' container_name: nexus restart: always environment: - TZ=Asia/Shanghai ports: - '8931:8081' volumes: - '/home/work/docker-nexus/data:/nexus-data'
-
在安装目录下启动服务
[root@node03 docker-nexus]# docker-compose up -d Creating network "docker-nexus_default" with the default driver Creating nexus ... done [root@node03 docker-nexus]# docker-compose logs -f Attaching to nexus nexus | mkdir: cannot create directory '../sonatype-work/nexus3/log': Permission denied nexus | mkdir: cannot create directory '../sonatype-work/nexus3/tmp': Permission denied nexus | OpenJDK 64-Bit Server VM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to No such file or directory nexus | nexus | Warning: Cannot open log file: ../sonatype-work/nexus3/log/jvm.log nexus | Warning: Forcing option -XX:LogFile=/tmp/jvm.log nexus | java.io.FileNotFoundException: ../sonatype-work/nexus3/tmp/i4j_ZTDnGON8hezynsMX2ZCYAVDtQog=.lock (No such file or directory) nexus | at java.io.RandomAccessFile.open0(Native Method) nexus | at java.io.RandomAccessFile.open(RandomAccessFile.java:316) nexus | at java.io.RandomAccessFile.<init>(RandomAccessFile.java:243) nexus | at com.install4j.runtime.launcher.util.SingleInstance.check(SingleInstance.java:72) nexus | at com.install4j.runtime.launcher.util.SingleInstance.checkForCurrentLauncher(SingleInstance.java:31) nexus | at com.install4j.runtime.launcher.UnixLauncher.checkSingleInstance(UnixLauncher.java:88) nexus | at com.install4j.runtime.launcher.UnixLauncher.main(UnixLauncher.java:67) nexus | java.io.FileNotFoundException: /nexus-data/karaf.pid (Permission denied) nexus | at java.io.FileOutputStream.open0(Native Method) nexus | at java.io.FileOutputStream.open(FileOutputStream.java:270) nexus | at java.io.FileOutputStream.<init>(FileOutputStream.java:213) nexus | at java.io.FileOutputStream.<init>(FileOutputStream.java:101) nexus | at org.apache.karaf.main.InstanceHelper.writePid(InstanceHelper.java:127) nexus | at org.apache.karaf.main.Main.launch(Main.java:243) nexus | at org.sonatype.nexus.karaf.NexusMain.launch(NexusMain.java:113) nexus | at org.sonatype.nexus.karaf.NexusMain.main(NexusMain.java:52) nexus | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) nexus | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) nexus | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) nexus | at java.lang.reflect.Method.invoke(Method.java:498) nexus | at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:85) nexus | at com.install4j.runtime.launcher.UnixLauncher.main(UnixLauncher.java:69) nexus | java.lang.RuntimeException: /nexus-data/log/karaf.log (No such file or directory) nexus | at org.apache.karaf.main.util.BootstrapLogManager.getDefaultHandlerInternal(BootstrapLogManager.java:102) nexus | at org.apache.karaf.main.util.BootstrapLogManager.getDefaultHandlersInternal(BootstrapLogManager.java:137) nexus | at org.apache.karaf.main.util.BootstrapLogManager.getDefaultHandlers(BootstrapLogManager.java:70) nexus | at org.apache.karaf.main.util.BootstrapLogManager.configureLogger(BootstrapLogManager.java:75) nexus | at org.apache.karaf.main.Main.launch(Main.java:244) nexus | at org.sonatype.nexus.karaf.NexusMain.launch(NexusMain.java:113) nexus | at org.sonatype.nexus.karaf.NexusMain.main(NexusMain.java:52) nexus | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) nexus | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) nexus | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) nexus | at java.lang.reflect.Method.invoke(Method.java:498) nexus | at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:85) nexus | at com.install4j.runtime.launcher.UnixLauncher.main(UnixLauncher.java:69) nexus | Caused by: java.io.FileNotFoundException: /nexus-data/log/karaf.log (No such file or directory) nexus | at java.io.FileOutputStream.open0(Native Method) nexus | at java.io.FileOutputStream.open(FileOutputStream.java:270) nexus | at java.io.FileOutputStream.<init>(FileOutputStream.java:213) nexus | at org.apache.karaf.main.util.BootstrapLogManager$SimpleFileHandler.open(BootstrapLogManager.java:193) nexus | at org.apache.karaf.main.util.BootstrapLogManager$SimpleFileHandler.<init>(BootstrapLogManager.java:182) nexus | at org.apache.karaf.main.util.BootstrapLogManager.getDefaultHandlerInternal(BootstrapLogManager.java:100) nexus | ... 12 more nexus | Error creating bundle cache. nexus | Unable to update instance pid: Unable to create directory /nexus-data/instances nexus | mkdir: cannot create directory '../sonatype-work/nexus3/log': Permission denied nexus | mkdir: cannot create directory '../sonatype-work/nexus3/tmp': Permission denied nexus | OpenJDK 64-Bit Server VM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to No such file or directory nexus | nexus | Warning: Cannot open log file: ../sonatype-work/nexus3/log/jvm.log nexus | Warning: Forcing option -XX:LogFile=/tmp/jvm.log nexus | java.io.FileNotFoundException: ../sonatype-work/nexus3/tmp/i4j_ZTDnGON8hezynsMX2ZCYAVDtQog=.lock (No such file or directory) nexus | at java.io.RandomAccessFile.open0(Native Method) nexus | at java.io.RandomAccessFile.open(RandomAccessFile.java:316) nexus | at java.io.RandomAccessFile.<init>(RandomAccessFile.java:243) nexus | at com.install4j.runtime.launcher.util.SingleInstance.check(SingleInstance.java:72) nexus | at com.install4j.runtime.launcher.util.SingleInstance.checkForCurrentLauncher(SingleInstance.java:31) nexus | at com.install4j.runtime.launcher.UnixLauncher.checkSingleInstance(UnixLauncher.java:88) nexus | at com.install4j.runtime.launcher.UnixLauncher.main(UnixLauncher.java:67) nexus | java.io.FileNotFoundException: /nexus-data/karaf.pid (Permission denied) nexus | at java.io.FileOutputStream.open0(Native Method) nexus | at java.io.FileOutputStream.open(FileOutputStream.java:270) nexus | at java.io.FileOutputStream.<init>(FileOutputStream.java:213) nexus | at java.io.FileOutputStream.<init>(FileOutputStream.java:101) nexus | at org.apache.karaf.main.InstanceHelper.writePid(InstanceHelper.java:127) nexus | at org.apache.karaf.main.Main.launch(Main.java:243) nexus | at org.sonatype.nexus.karaf.NexusMain.launch(NexusMain.java:113) nexus | at org.sonatype.nexus.karaf.NexusMain.main(NexusMain.java:52) nexus | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) nexus | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) nexus | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) nexus | at java.lang.reflect.Method.invoke(Method.java:498) nexus | at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:85) nexus | at com.install4j.runtime.launcher.UnixLauncher.main(UnixLauncher.java:69) nexus | java.lang.RuntimeException: /nexus-data/log/karaf.log (No such file or directory) nexus | at org.apache.karaf.main.util.BootstrapLogManager.getDefaultHandlerInternal(BootstrapLogManager.java:102) nexus | at org.apache.karaf.main.util.BootstrapLogManager.getDefaultHandlersInternal(BootstrapLogManager.java:137) nexus | at org.apache.karaf.main.util.BootstrapLogManager.getDefaultHandlers(BootstrapLogManager.java:70) nexus | at org.apache.karaf.main.util.BootstrapLogManager.configureLogger(BootstrapLogManager.java:75) nexus | at org.apache.karaf.main.Main.launch(Main.java:244) nexus | at org.sonatype.nexus.karaf.NexusMain.launch(NexusMain.java:113) nexus | at org.sonatype.nexus.karaf.NexusMain.main(NexusMain.java:52) nexus | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) nexus | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) nexus | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) nexus | at java.lang.reflect.Method.invoke(Method.java:498) nexus | at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:85) nexus | at com.install4j.runtime.launcher.UnixLauncher.main(UnixLauncher.java:69) nexus | Caused by: java.io.FileNotFoundException: /nexus-data/log/karaf.log (No such file or directory) nexus | at java.io.FileOutputStream.open0(Native Method) nexus | at java.io.FileOutputStream.open(FileOutputStream.java:270) nexus | at java.io.FileOutputStream.<init>(FileOutputStream.java:213) nexus | at org.apache.karaf.main.util.BootstrapLogManager$SimpleFileHandler.open(BootstrapLogManager.java:193) nexus | at org.apache.karaf.main.util.BootstrapLogManager$SimpleFileHandler.<init>(BootstrapLogManager.java:182) nexus | at org.apache.karaf.main.util.BootstrapLogManager.getDefaultHandlerInternal(BootstrapLogManager.java:100) nexus | ... 12 more nexus | Error creating bundle cache. nexus | Unable to update instance pid: Unable to create directory /nexus-data/instances
-
启动后查看日志,发现提示权限不足,为数据映射目录加上权限即可
[root@node03 docker-nexus]# chmod 777 /home/work/docker-nexus/data/ You have new mail in /var/spool/mail/root [root@node03 docker-nexus]# docker-compose ps Name Command State Ports ----------------------------------------------------------------------- nexus sh -c ${SONATYPE_DIR}/star ... Up 0.0.0.0:8931->8081/tcp
四、验证Nexus
-
在浏览器中输入IP:端口,点击页面右上角登录,根据页面提示查找到初始密码,然后将初始密码复制
若输入ip:端口后,浏览器无法访问页面,可以稍等一会,查看日志确保nexus启动完成后再访问
[root@node03 docker-nexus]# cat data/admin.password b05c1771-6be1-4cb2-9b4e-5cffb610099d
-
登录后会有一个弹窗,要求给admin用户重新设置一个新的密码,请记住这个设置的密码(本次安装设置的密码为admin_qazwsx)
-
点击"next",弹窗提示是否允许匿名用户访问,根据自己需求选择即可,本次安装选择"开启匿名访问"
-
Nexus安装成功,再根据需求进行相关配置即可。