docker-compose安装Nexus

一、Nexus

Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。Nexus 使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过m2eclipse与Eclipse集成使用。Nexus支持WebDAV与LDAP安全身份认证。

Nexus官网

二、部署规划

服务器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
    

    BuV6Df.png

  • 登录后会有一个弹窗,要求给admin用户重新设置一个新的密码,请记住这个设置的密码(本次安装设置的密码为admin_qazwsx

    BuVcb8.png

  • 点击"next",弹窗提示是否允许匿名用户访问,根据自己需求选择即可,本次安装选择"开启匿名访问"

    BuV2VS.png

  • Nexus安装成功,再根据需求进行相关配置即可。

原文地址:https://www.cnblogs.com/linanjie/p/13932377.html