一、前言
之前没有用docker的经验,这几天正好有需求要部署项目,于是正好学习了一波,简单部署了一个dubbo服务吧,记录一下过程。
二、环境准备及基础服务
- Linux contos 7
- Docker version:18.06.0-ce
- jdk 1.8+
- git 1.8+
- zookeeper
三、部署步骤
• zookeeper
• dubbo-admin
• service(具体项目,idea打包好上传到仓库即可)
dubbo + zookeeper
zookeeper:
// Run zookeeper:
docker run -d --name zk -p 2181:2181 zookeeper
需要dubbo-admin作为管理控制台
dubbo-admin:
// pull images
docker pull riveryang/dubbo-admin
Run dubbo-admin:
docker run -d --name dubbo-admin -p 8082:8080 --link zk:zk -e DUBBO_REGISTRY="zookeeper:\/\/zk:2181" riveryang/dubbo-admin
dubbo-admin默认配置(可根据实际情况修改):
Default environment:
DUBBO_REGISTRY=zookeeper://127.0.0.1:2181
DUBBO_ROOT_PASSWORD=root
DUBBO_GUEST_PASSWORD=root
service
DockerFile:
FROM openjdk:8
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
USER root
WORKDIR /home
COPY $PWD/target/app.jar /home
启动脚本(start-code.sh):
#!/bin/bash
cd `dirname $0`
img_mvn="maven:3.3.3-jdk-8" # docker image of maven
m2_cache=~/.m2 # the local maven cache dir
proj_home=$PWD # the project root dir
img_output="***/d-baton-iam-service" # output image tag
git pull # should use git clone https://name:pwd@xxx.git
echo "use docker maven"
docker run --rm \
-v $m2_cache:/root/.m2 \
-v $proj_home:/usr/src/mymaven \
-w /usr/src/mymaven $img_mvn mvn clean package -U -Puat
sudo mv $proj_home/target/provider-*.jar $proj_home/target/app.jar # 兼容所有sh脚本
docker build -t $img_output .
mkdir -p $PWD/logs
chmod 777 $PWD/logs
# 删除容器
docker rm -f d-baton-iam-service &> /dev/null
version=`date "+%Y%m%d%H"`
#spring_datasource_url=jdbc:mysql://112.74.76.145:3306/pmsX?useUnicode=true\&characterEncoding=utf-8\&useSSL=false\&serverTimezone=GMT%2B8
# 启动镜像
docker run -d --restart=on-failure:5 --privileged=true \
--net=host \
-w /home \
-v $PWD/logs:/home/logs \
--name d-baton-iam-service deepexi/d-baton-iam-service \
java \
-Djava.security.egd=file:/dev/./urandom \
-Duser.timezone=Asia/Shanghai \
-XX:+PrintGCDateStamps \
-XX:+PrintGCTimeStamps \
-XX:+PrintGCDetails \
-XX:+HeapDumpOnOutOfMemoryError \
-Xloggc:logs/gc_$version.log \
-jar /home/app.jar \
--server.port=8083 # 服务端口
--dubbo.registry.address=10.48.16.2:2181 # 注册中心zk地址
# 查看日志
docker logs -f d-baton-iam-service
启动服务
先在服务器拉好项目并下载好相关依赖,进入到项目根目录
sh start-code-dev.sh
浏览器打开:{服务器ip}:8082 登录dubbo-admin后台看到有服务则部署完成且服务注册成功