利用Docker搭建maven私服
步骤一:安装 Docker 和 Docker Compose
首先,确保您的系统已安装 Docker 和 Docker Compose。推荐用包管理工具安装。避免依赖问题;
特别注意:docker和docker-compose两个版本匹配
步骤二:创建 Docker Compose 文件
一定要注意文件夹权限!!!
- 自定义目录下创建一个新文件,并将其命名为
docker-compose.yml
。在该文件中,我们将定义 Nexus 服务的配置。version: "3.3" services: nexus: image: sonatype/nexus3 container_name: nexus3 restart: always environment: - TZ=Asia/Shanghai ports: - 8081:8081 volumes: - ./data:/nexus-data
- 使用了 Nexus 官方提供的 Docker 镜像 sonatype/nexus3,并将其命名为 nexus3。我们将容器内部的 8081 端口映射到宿主机的 8081 端口上,以便我们能够通过浏览器访问 Nexus 仓库。同时,我们还挂载了一个
本地目录 ./data
到容器的 /nexus-data 目录,以保持 Nexus 的数据持久化。
步骤三:启动 Nexus 服务
- 保存并关闭 docker-compose.yml 文件后,执行以下命令启动 Nexus 服务:
docker-compose up -d
- 常见问题:
- 配置的文件夹权限;
修改挂载文件夹权限即可 sudo chmod -R 777 data 修改完停止容器 docker-compose down 再启动即可 docker-compose up -d
- 配置的文件夹权限;
- 提示找不到配置文件
- 一般是docker和docker-compose两个版本没有匹配上;
- 配置文件版本号没有匹配上。
步骤四:访问 Nexus 仓库
访问地址: http://localhost:8081/
- 初始admin 密码在自定义文件夹下
admin.password
中
本地setting.xml
配置
<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">
<!-- 设置是否应该为所有项目生成有效模型(pom.xml) -->
<interactiveMode>true</interactiveMode>
<!-- 本地仓库位置 -->
<localRepository>/home/abu/.m2/repository</localRepository>
<!-- 服务器配置 -->
<servers>
<server>
<id>maven-snapshots</id>
<username>你的用户名</username>
<password>你的密码</password>
</server>
<server>
<id>maven-releases</id>
<username>你的用户名</username>
<password>你的密码</password>
</server>
</servers>
<mirrors>
<mirror>
<id>maven-snapshots</id>
<name>maven-snapshots</name>
<url>http://自己的设备ip地址:8081/repository/</url>
<mirrorOf>*</mirrorOf>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<!-- 配置 Maven 仓库 -->
<profiles>
<profile>
<id>myprofile</id>
<repositories>
<repository>
<id>maven-snapshots</id>
<url>http://自己的设备ip地址:8081/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
<repository>
<id>maven-releases</id>
<url>http://自己的设备ip地址:8081/repository/maven-releases/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-snapshots</id>
<url>http://自己的设备ip地址:8081/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
<pluginRepository>
<id>maven-releases</id>
<url>http://自己的设备ip地址:8081/repository/maven-releases/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!-- 激活配置文件 -->
<activeProfiles>
<activeProfile>myprofile</activeProfile>
</activeProfiles>
</settings>
机器重启后通过docker拉起私服
当您的机器重启后,要通过Docker拉起对应的Maven私服服务,您可以使用以下步骤:
-
确保Docker服务已启动:
在机器重启后,首先需要确认Docker服务已经启动。您可以通过执行以下命令来启动Docker服务:sudo systemctl start docker
或者如果您使用的是systemd,可以使用:
sudo service docker start
-
使用Docker命令启动Maven私服容器:
如果您之前已经使用Docker部署了Maven私服,并且设置了容器的重启策略为always
,那么Docker会在服务启动时自动拉起所有设置了--restart always
的容器。您可以通过以下命令来检查容器的状态:docker ps
如果Maven私服容器没有自动启动,您可以使用以下命令手动启动:
docker start <容器名称或ID>
其中
<容器名称或ID>
是您之前创建Maven私服容器时指定的名称或容器的ID。如果您使用的是默认设置,可能是nexus
或者您自定义的名称。 -
检查容器日志:
如果需要检查容器启动过程中的日志,可以使用以下命令:docker logs -f <容器名称或ID>
这将显示容器的实时日志输出,有助于诊断启动过程中可能出现的问题。
-
访问Maven私服:
一旦容器启动,您可以通过浏览器访问Maven私服的Web界面,通常是http://<宿主机IP>:8081
,其中8081
是您映射到宿主机的端口号。
以上步骤可以帮助您在机器重启后通过Docker拉起Maven私服服务。如果您之前没有设置容器的重启策略,那么您可能需要手动启动容器,或者重新创建并启动一个新的Maven私服容器,使用类似于以下命令:
docker run -d --name nexus3 -p 8081:8081 --restart always -v /home/nexus/data:/nexus-data sonatype/nexus3
这里-v /home/nexus/data:/nexus-data
是将宿主机的目录挂载到容器中,用于数据持久化。