在家里自己玩java,因为最近趋势,所有的项目开发都是依赖maven,而私服在公司的时候,搭建有,但是在家里自己玩的时候,就没有这样的环境了,于是想到了docker安装。
搜一搜资料也不少,安装最终成功,写下步骤。
至于服务器安装docker之类的就不说了,因为之前写过了。
步骤如下:
1、登录服务器。搜索用的最多的版本 2、下载这个版本镜像信息。 3、执行安装版本nexus3。 4、登录验证测试。 5、设置配置nexus。 6、启动工具eclipse新建一个maven工程,连接我们的maven私服。 7、测试。。 8、成功。
1、登录服务器。搜索用的最多的版本
// 搜索nexus相关 # docker search nexus
2、下载这个版本镜像信息。
// 下载镜像 # docker pull sonatype/nexus3
// 查看下载镜像
# docker images | grep nexus
3、执行安装版本nexus3。
这里挂载的目录为:
/home/soft/nexus/data
// nexus的数据都是在/nexus-data 文件夹中,所以为了数据不丢失在宿主机中,我们需要将这数据挂载出来,并且挂载出来一堆端口
[root@localhost nexus]# vi nexus_docker.sh
docker run -d \
--restart=always \
-p 8081:8081 \
-v /home/soft/nexus/data:/nexus-data \
--name nexus3 \
sonatype/nexus3
[root@localhost nexus]# ./nexus_docker.sh
// 查看服务
# docker ps -a | grep nexus
4、登录验证测试。
默认情况下8081是我们的访问端口。因为别的服务我已经使用了,所以启动的时候,映射为18081
在浏览器中访问ip:端口 我本机的服务器是192.168.5.180 所以我访问的地址是 http://192.168.5.180:18081
5、设置配置nexus。
登录服务,用之前其他版本的默认账号密码:admin/admin123 发现账号无法登录,提示错误。。。。。
搜索了一下才知道,nexus3版本与其他版本不一样,密码是随机的,在nexus-data目录中 admin.password。
进入挂载出来的目录查看。。
// 进入挂载目录 # cd /home/soft/nexus/data // 查看有什么文件 # ls // 查看那admin.password文件 # cat admin.password
也可以登录到docker 的nexus3容器中查看
# docker exec -it nexus3 /bin/bash
# cd /nexus-data
拿到admin密码为:1a0838f3-b3e3-42b2-93fd-82d322b91f80
右上角 sign in 登录。。登录成功,但需要修改密码
深思熟虑后,我设置密码为 admin123
5.1 配置nexus
路径:
settings->Repository->Repositories -> 列表选择maven-central
->
http://maven.aliyun.com/nexus/content/groups/public
修改默认仓库地址为阿里云地址。之前的地址是国外的,下载各种比较慢
这里一定要配置为allow redeploy ,否则就关联不了外网
配置setting.xml
在apache.org 上下载maven的包,解压后。
打开:我这里是****apache-maven-3.6.3\conf
D:\soft\apache-maven-3.6.3\conf
找到 【mirrors】节点,打开节点,配置我们的私服地址,就可以了。
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
| -->
<mirror>
<id>myMaven180</id>
<mirrorOf>myMaven180</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://192.168.5.180:8081/repository/maven-public/</url>
</mirror>
</mirrors>
完整settings.xml
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <!-- 本地仓库地址--> <localRepository>E:/my_repository</localRepository> <!-- pluginGroups | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e. | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list. |--> <pluginGroups> <!-- pluginGroup | Specifies a further group identifier to use for plugin lookup. <pluginGroup>com.your.plugins</pluginGroup> --> </pluginGroups> <!-- proxies | This is a list of proxies which can be used on this machine to connect to the network. | Unless otherwise specified (by system property or command-line switch), the first proxy | specification in this list marked as active will be used. |--> <proxies> <!-- proxy | Specification for one proxy, to be used in connecting to the network. | <proxy> <id>optional</id> <active>true</active> <protocol>http</protocol> <username>proxyuser</username> <password>proxypass</password> <host>proxy.host.net</host> <port>80</port> <nonProxyHosts>local.net|some.host.com</nonProxyHosts> </proxy> --> </proxies> <!-- servers | This is a list of authentication profiles, keyed by the server-id used within the system. | Authentication profiles can be used whenever maven must make a connection to a remote server. |--> <servers> <!-- 配置用户信息,这里的ID与pom.xml中的配置ID要一致 --> <server> <id>nexus-releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>nexus-snapshots</id> <username>admin</username> <password>admin123</password> </server> <!-- Another sample, using keys to authenticate. <server> <id>siteServer</id> <privateKey>/path/to/private/key</privateKey> <passphrase>optional; leave empty if not used.</passphrase> </server> --> </servers> <!-- mirrors | This is a list of mirrors to be used in downloading artifacts from remote repositories. | | It works like this: a POM may declare a repository to use in resolving certain artifacts. | However, this repository may have problems with heavy traffic at times, so people have mirrored | it to several places. | | That repository definition will have a unique id, so we can create a mirror reference for that | repository, to be used as an alternate download site. The mirror site will be the preferred | server for that repository. |--> <mirrors> <!-- mirror | Specifies a repository mirror site to use instead of a given repository. The repository that | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | <mirror> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://my.repository.com/repo/path</url> </mirror> --> <mirror> <id>nexus-myself</id> <!--*指的是访问任何仓库都使用我们的私服--> <mirrorOf>*</mirrorOf> <name>Nexus myself</name> <url>http://192.168.89.190:8081/repository/maven-public/</url> </mirror> </mirrors> <!-- profiles | This is a list of profiles which can be activated in a variety of ways, and which can modify | the build process. Profiles provided in the settings.xml are intended to provide local machine- | specific paths and repository locations which allow the build to work in the local environment. | | For example, if you have an integration testing plugin - like cactus - that needs to know where | your Tomcat instance is installed, you can provide a variable here such that the variable is | dereferenced during the build process to configure the cactus plugin. | | As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles | section of this document (settings.xml) - will be discussed later. Another way essentially | relies on the detection of a system property, either matching a particular value for the property, | or merely testing its existence. Profiles can also be activated by JDK version prefix, where a | value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'. | Finally, the list of active profiles can be specified directly from the command line. | | NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact | repositories, plugin repositories, and free-form properties to be used as configuration | variables for plugins in the POM. | |--> <profiles> <!-- profile | Specifies a set of introductions to the build process, to be activated using one or more of the | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/> | or the command line, profiles have to have an ID that is unique. | | An encouraged best practice for profile identification is to use a consistent naming convention | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc. | This will make it more intuitive to understand what the set of introduced profiles is attempting | to accomplish, particularly when you only have a list of profile id's for debug. | | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo. <profile> <id>jdk-1.4</id> <activation> <jdk>1.4</jdk> </activation> <repositories> <repository> <id>jdk14</id> <name>Repository for JDK 1.4 builds</name> <url>http://www.myhost.com/maven/jdk14</url> <layout>default</layout> <snapshotPolicy>always</snapshotPolicy> </repository> </repositories> </profile> --> <!-- | Here is another profile, activated by the system property 'target-env' with a value of 'dev', | which provides a specific path to the Tomcat instance. To use this, your plugin configuration | might hypothetically look like: | | ... | <plugin> | <groupId>org.myco.myplugins</groupId> | <artifactId>myplugin</artifactId> | | <configuration> | <tomcatLocation>${tomcatPath}</tomcatLocation> | </configuration> | </plugin> | ... | | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to | anything, you could just leave off the <value/> inside the activation-property. | <profile> <id>env-dev</id> <activation> <property> <name>target-env</name> <value>dev</value> </property> </activation> <properties> <tomcatPath>/path/to/tomcat/instance</tomcatPath> </properties> </profile> --> <profile> <id>mynexus</id> <repositories> <!-- 私有库地址--> <repository> <id>nexus</id> <url>http://192.168.89.190:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <!--插件库地址--> <pluginRepository> <id>nexus</id> <url>http://192.168.89.190:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <!-- 激活我们上面配置的ID为profiles的信息 --> <activeProfiles> <activeProfile>mynexus</activeProfile> </activeProfiles> </settings>