最近研究Flutter混合开发,需要一个Maven仓库管理产物,咬咬牙整了一个2GHZ 2G内存的华为云服务器,记录一下部署过程中遇到的坑及解决方法
1.前期准备
购买华为云服务器,安装docker等还是很顺利的,这边就不赘述
2.一键安装Nexus无法启动
使用华为云推荐的宝塔管理界面,一键安装Nexus Docker容器
安装成功后却无法启动,查看日志发现报错Allocation 内存报错,查了半天原来Nexus默认需求2703M内存然而可怜的云服务器只有1773M内存,导致启动失败,只好想办法减少Docker内存
3使用命令行安装Docker容器
执行命令
docker pull sonatype/nexus3:latest //拉取最新nexus docker镜像
mkdir -p /data/dir/nexus-data && chown -R 200 /data/dir/nexus-data //使用这种方法防止docker内读写文件权限不足问题
docker run -d --name juke-maven --restart=always -p 8081:8081 -v /data/dir/nexus-data:/nexus-data -e 'INSTALL4J_ADD_VM_PARAMS=-Xms128m -Xmx256m -XX:MaxDirectMemorySize=256m' sonatype/nexus3:latest //减少虚拟机内存开销,创建docker容器
用这种方法成功启动了docker容器,但是却卡在了curl localhost:8081,使用ping ${容器ip} 可以成功ping,但是curl报错 curl (7) connect refused,排查了两天以为是网关配置错误,最后还是查看日志发现JVM内存过小导致启动时OOM
4增加JVM内存
修改最后一行分配内存的参数
docker run -d --name juke-maven --restart=always -p 8081:8081 -v /data/dir/nexus-data:/nexus-data -e 'INSTALL4J_ADD_VM_PARAMS=-Xms256m -Xmx512m -XX:MaxDirectMemorySize=512m' sonatype/nexus3:latest
这次学乖了,先看看日志中有没有报错,知道看到这行日志终于感觉稳了
使用curl localhost:8081 也成功返回了html标签,最后在华为云安全组加上8081的端口权限就可以公网访问了
最后取docker内读取密码完成登录
docker exec juke-maven cat /nexus-data/admin.password
结果却是no such file
只好进到docker内部使用ls一个一个排查了
docker exec -it juke-maven bash
最后在在父目录中找到了
5总结
还是需要多查看docker的日志,就算docker容器成功启动了也不一定代表内部服务成功启动了