Docker - 部署Java Web 项目之注意事项

上篇 Docker - 部署Java Web 项目记录了使用docker如何搭建一个拥有java运行环境的docker镜像。
这篇博客记录之前构建镜像过程中遇到的一些问题。

这里,在docker容器中,部署项目思路:
1.先git拉取最新代码
2.因为项目使用了maven进行包管理,并且是多模块。所以先每个模块分别打包
3.打包完成后,将最后的war包移动到tomcat中,
4.启动tomcat

脚本

run.sh

#kill -9 `lsof -i:8080 | sed -n "2, 1p" |awk '{print $2}'|uniq`
cd /opt/soft/git/client/qa/wybc-malls/
git pull origin master
echo 'pull over...'

cd /opt/soft/git/client/qa/wybc-malls/wybc-parent
mvn clean install

cd /opt/soft/git/client/qa/wybc-malls/wybc-common
mvn clean install

cd /opt/soft/git/client/qa/wybc-malls/wybc-manager
mvn clean install

cd /opt/soft/git/client/qa/wybc-malls/wybc-manager/wybc-manager-web
mvn clean package -Pqa

echo 'package over...'
kill -9 `lsof -i:8087 | sed -n "2, 1p" |awk '{print $2}'|uniq`
rm /opt/project_file/qa/malls.war
cp /opt/soft/git/client/qa/wybc-malls/wybc-manager/wybc-manager-web/target/malls.war /opt/project_file/qa/

echo `lsof -i:8087`
#kill -9 `lsof -i:8080 | sed -n "2, 1p" |awk '{print $2}'|uniq`
sleep 5
rm -rf /opt/tomcatqa/webapps/*
/opt/tomcatqa/bin/startup.sh > /dev/null 2>&1 &
echo `lsof -i:8087`
sleep 5
echo 'start over start over start over... start over... start over... start over... start over... start over... start over... start over... '

maven仓库

1、关于本地仓库的位置

默认位置: ${user.home}/.m2/repository

windows:C:\Documents and Settings\Administrator.m2

Linux:/root/.m2

问题

1、执行脚本,在maven打包这一步,报了找不到jar包得错

Failed to execute goal on project wybc-manager-service: Could not resolve dependencies for project com.wybc:wybc-manager-service:jar:0.0.1-SNAPSHOT: Could not find artifact com.alipay:sdk-java:jar:20170307171631 in central (https://repo.maven.apache.org/maven2)

这里写图片描述

阿里云的alipay.jar包在maven的远程仓库中找不到。
解决思路:
方法1:修改maven的配置文件,指定阿里云的maven仓库。
方法2:我本地是有这个jar包的,直接复制到服务器对应的maven仓库下。

扫描二维码关注公众号,回复: 3710848 查看本文章

2.、tomcat8启动, 提示找tomcat7的 setclasspath.sh文件????????
目前还没有解决 !我并没有配置tomcat环境。很奇怪。

3、Docker为什么刚运行就退出了?

后台运行docker镜像:

$ docker run -d ubuntu /root/run.sh

运行了一个简单的容器后,然后docker ps -a 进行查看, 会发现容器已经退出。

解决办法:
在我们要运行的run.sh脚本后面加命令tail -f /dev/null,就可以保持你的容器一直在前台运行了。因为tail -f /dev/null这个命令是一直执行的,这样容器就不会退出来。

猜你喜欢

转载自blog.csdn.net/qq_22638399/article/details/82704108