公司的系统最近都需要docker来搞,所以楼主也是亚历山大,但是最终还是弄出来一点点东西,需要用到docker的读者在对照此文操作之前建议先在网上了解一下docker,当然是越多越好咯。
楼主在本地安装了一个centos7虚拟机来做测试:
1.安装docker
以centos7虚拟机为例:
$ sudo yum install -y docker
2.获取镜像:
先用docker search centos查找最新的镜像,挑选official标识为[OK]的镜像下载最新的centos7操作系统镜像:
$ sudo docker pull docker.io/centos
使用以上命令获取安装。
3.查看本地镜像:
$ sudo docker images
使用上述命令查看机器上已安装的docker镜像
REPOSITORY:镜像所属仓库;
TAG:镜像的标签信息;
IMAGE ID:镜像的ID号;
CREATED:镜像创建的时间
VIRTUAL SIZE:镜像大小。
4.制作java程序基础镜像
①.准备weblogic、jdk安装文件:jdk-8u73-linux-x64.rpm,wls1036_generic.jar,安装文件需放置某个目录下,比如/data/。
②.启动镜像进入容器,并且映射内外目录:
$ docker run -it -v /data:/data docker.io/centos /bin/bash
③.安装jdk:
$ rpm -ivh /data/jdk-8u73-linux-x64.rpm
④.安装weblogic:
$ java -jar /data/wls1036_generic.jar
⑤.退出容器:
$ exit
⑥.查看容器id:
$ docker ps -a
⑦.提交已修改的容器到一个新的镜像:
$ sudo docker commit 29eb60c2e54f java_base_image
5.生成业务程序镜像
①.创建项目的打包目录
$ mkdir esb_project
②.将源程序生成的war包拷贝至此目录
③.编写Dockerfile:
#引用基础镜像名称
FROM java_base_image
#把本机lesb目录拷贝至镜像内的/home/weblogic/lesb目录
ADD lesb /home/weblogic/lesb
#将config.xml拷贝至镜像的config目录
ADD config.xml /home/weblogic/user_projects/domains/base_domain/config/
# 将启动脚本拷贝至镜像内的根目录
ADD start.sh /
# 给该启动脚本赋执行权限
RUN chmod +x /start.sh
# 申明镜像内监听端口(可多个)
EXPOSE 7001
EXPOSE 7501
# 容器启动时自动执行的命令
CMD ["/start.sh"]
④编写镜像生成脚本
build.sh
#!/bin/bash
# 获取日期作为镜像tag名
tag=`date +%Y%m%d%H`
# 利用当前目录下的Dockerfile生成镜像
docker build -t lesb:$tag .
# 将最新生成的镜像命名为latest
docker tag -f lesb:$tag lesb:latest
⑤.编写镜像启动时的自动运行脚本
start.sh
#!/bin/bash
# 根据传入的环境变量生成营运程序的配置文件
CONFIG_PATH=/home/weblogic/lesb/WEB-INF/classes/url_router.properties
# 为配置文件的配置项设置默认值
URL_POSROUTER=${URL_POSROUTER:=200.7.144.151:8902}
URL_SAS=${URL_SAS:="http://200.7.21.151:11112/router/pos"}
TPDU_CONFIG=${TPDU_CONFIG:=0002-200.7.144.151:5760,0701-200.7.144.151:4500}
# 将配置项的内容放置到变量CONFIG_CONTENT中
CONFIG_CONTENT=`cat << EOF
### url
url_posrouter=$URL_POSROUTER
url_sas=$URL_SAS
### tpdu
tpdu_config=$TPDU_CONFIG
EOF`
# 将内容写到文件CONFIG_PATH中
echo "$CONFIG_CONTENT" >> $CONFIG_PATH
# 启动应运程序
/home/weblogic/user_projects/domains/base_domain/bin/startWebLogic.sh
⑥.编写运行已生成镜像的脚本
Run.sh
docker run -d -p 7011:7001 -p 7501:7501 \ # 映射监听业务程序的端口号
-e "URL_POSROUTER=200.7.144.153:8902" \ #
-e ":URL_SAS=http://200.7.21.151:11113/router/pos" \
-e "TPDU_CONFIG=0002-200.7.144.151:5760,0701-200.7.144.151:4501" \
-v /etc/localtime:/etc/localtime \
-v /data/lesb_log:/data/logs/esb/ \
lesb
7.执行构建脚本build.sh
8.执行run.sh
操作过程中遇到什么问题,随时欢迎留言咨询,谢谢!