Docker & Dubbo:Dubbo提供者部署到Docker容器
2016-05-13 13:43
756 查看
很简单的一个工作日志。
如果我们把服务提供者打包到镜像,那不在本文讨论范围。
我只是想记录一下,利用 -v 参数挂载本地目录来执行Dubbo的服务提供者。
首先,我们需要将Provider使用Main函数启动(如果你是将Provider放到Tomcat容器中跑,那也不在本文讨论的范围)。
假如我们有一个叫community-provider.jar的文件,在本地执行它的命令行是:
当然,我们也可以这样:
现在,我们需要将它部署到Docker容器中运行,那么我们可以先写一个小的脚本,把上面那一长串命令行包住。
嗯,看上去这一段脚本一点也不小,的确,这是我参考dubbo-simple项目中生成的start.sh脚本改写的。
关键是最后那句。
保存上面的脚本为start_provider_docker.sh,配置成+x。现在我们就可以方便地使用-v挂载的方式启动这个Dubbo的服务提供者了,再写一个启动容器的脚本run_provider.sh :
以后,我们想要启动一个服务提供者,并在30888端口上提供服务,只需要这样:
如果我们把服务提供者打包到镜像,那不在本文讨论范围。
我只是想记录一下,利用 -v 参数挂载本地目录来执行Dubbo的服务提供者。
首先,我们需要将Provider使用Main函数启动(如果你是将Provider放到Tomcat容器中跑,那也不在本文讨论的范围)。
假如我们有一个叫community-provider.jar的文件,在本地执行它的命令行是:
java -jar community-provider.jar app-context.xml llw-provider.xml
当然,我们也可以这样:
java -jar -Ddubbo.protocol.port=30882 community-provider.jar app-context.xml llw-provider.xml
现在,我们需要将它部署到Docker容器中运行,那么我们可以先写一个小的脚本,把上面那一长串命令行包住。
#!/bin/bash cd `dirname $0` SERVER_NAME="Community-Provider" JAR_FILE="community-provider-0.0.1.jar" JAR_CONF="conf/application-context.xml conf/community-provider.xml" SERVER_PORT="30881" LOGS_DIR="logs" DUBBO_OPTS="" if [ -n "$1" ]; then SERVER_PORT=$1 fi DUBBO_OPTS="-Ddubbo.protocol.port=$SERVER_PORT" if [ ! -d $LOGS_DIR ]; then mkdir $LOGS_DIR fi STDOUT_FILE=$LOGS_DIR/stdout.$SERVER_PORT.log JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true " JAVA_MEM_OPTS="" BITS=`java -version 2>&1 | grep -i 64-bit` if [ -n "$BITS" ]; then JAVA_MEM_OPTS=" -server -Xmx2g -Xms2g -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 " else JAVA_MEM_OPTS=" -server -Xms1g -Xmx1g -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC " fi echo -e "Starting $SERVER_NAME ...\c" java $JAVA_OPTS $JAVA_MEM_OPTS $DUBBO_OPTS -jar $JAR_FILE $JAR_CONF
嗯,看上去这一段脚本一点也不小,的确,这是我参考dubbo-simple项目中生成的start.sh脚本改写的。
关键是最后那句。
保存上面的脚本为start_provider_docker.sh,配置成+x。现在我们就可以方便地使用-v挂载的方式启动这个Dubbo的服务提供者了,再写一个启动容器的脚本run_provider.sh :
#!/bin/bash docker run -d --name comm-provider-$1 --net=host -v /home/provider:/home java:7-jre /home/start_provider_docker.sh $1
以后,我们想要启动一个服务提供者,并在30888端口上提供服务,只需要这样:
./run_provider.sh 30888
相关文章推荐
- Q&A
- 如何实现Docker镜像和容器实例的备份迁移
- docker warning ipv4 forwarding is disabled. networking will not work
- 167 docker docker构建nginx容器系列问题
- (OK) NS-3—LXC-(Docker)—MANET——HOWTO Use Linux Containers to set up virtual networks
- docker1.10.3-jetty8-jersey1.x 构建微服务
- Docker (一) 运行容器
- docker中删除镜像的描述
- Mac OS下ssh连接docker的容器全流程
- Dockerfile详解
- centos安装docker容器
- 基于 Docker 的现代软件供应链
- 基于 Docker 的现代软件供应链
- (OK) Creates Docker-based Virtual PC containers for use inside GNS3 as end hosts.
- Docker的优势
- Running quagga docker container with GNS3
- Docker题外话
- (OK) Docker—GNS3—IMUNES—Linux
- Docker容器的数据管理
- {实战}Docker Machine + Compose + Swarm