docker部署mule项目

 

一 创建mule目录  mkdir mule

1 创建 touch dockerfile 、java安装包、 mule程序应用包、 mule服务器包等放在同dockerfile文件同一目录

 

2.上传mule应用程序包zip,如图:

 

3 编辑 vim dockerfile 

如下图所示:

#本地必须要有centos:7.2的镜像

FROM 110.120.119.110:2101/library/centos:centos7

# 创建者 

MAINTAINER yan

ARG user=yan    #yan用户是系统中已创建好的用户

ARG user_id=1101   #1101是已有的id号  用命令id可以查看

ARG user_group=1101

ENV USER=${user} \

    USER_ID=${user_id} \

    USER_GROUP=${user_group} \

    LOG_PATH=/data/yan/onb \    # /data/yan/onb该路径是物理机已创建好的目录 

TERM=xterm

#时区设置 没有就创建有就删除

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

 

RUN mkdir -p /data/yan/onb && rm -rf /data/yan/onb  && groupadd -g ${USER_GROUP} ${USER} && useradd -u ${USER_ID} -g ${USER_GROUP} -d /data/yan/onb ${USER}

RUN mkdir -p ${LOG_PATH} && chmod a+x /data/yan/onb/ && chown -R ${USER_ID}:${USER_GROUP} ${LOG_PATH} /data/yan/onb/

#用USER指定用户后,docker容器应用程序以指定的用户运行,这里是yan,不指定的话默认是root用户运行

USER ${USER}   

#指定工作目录   该目录与指定的日志目录一致  指定工作路径后  日志也将输出到指定的WORKDIR命令所指定的目录下

WORKDIR /data/yan/onb   

# mule的包添加到/data/yan/onb/路径下

ADD jdk-8u171-linux-x64.tar.gz /data/gdeop/mule/eop-prod-cbs-api-center/jdk1.8/

ADD mule-standalone-3.8.1.tar.gz /data/gdeop/mule/eop-prod-cbs-api-center/

## 设置Java环境变量ENV

ENV JAVA_HOME /data/gdeop/mule/eop-prod-cbs-api-center/jdk1.8/jdk1.8.0_171

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.16

# ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.16

ENV PATH $PATH:$JAVA_HOME/bin

ENV LANG=en_US.UTF-8

ENV TZ=Asia/Shanghai

# mule应用包添加到//data/gdeop/mule/ctg-eop/路径下

COPY api-center2019011710308622.zip /data/gdeop/mule/eop-prod-cbs-api-center/mule-standalone-3.8.1/apps/

#mule开启服务

CMD /data/gdeop/mule/eop-prod-cbs-api-center/mule-standalone-3.8.1/bin/mule start  /data/gdeop/mule/eop-prod-cbs-api-center/api-center2019011710308622.zip && tail -100f /dev/null

 

4 Mule应用的Dockerfile文件:

[telecom@master mule]$ vim dockerfile

Dockerfile文件脚本:

#本地必须要有centos:7.2的镜像

FROM 110.120.119.110:2101/library/centos:centos7

# 创建者 

MAINTAINER gdeop

ARG user=yan

ARG user_id=1101

ARG user_group=1101

ENV USER=${user} \

    USER_ID=${user_id} \

    USER_GROUP=${user_group} \

    LOG_PATH=/data/gdeop/apicenter \

TERM=xterm

#时区设置 没有就创建有就删除

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

 

RUN mkdir -p /data/gdeop/apicenter && rm -rf /data/gdeop/apicenter  && groupadd -g ${USER_GROUP} ${USER} && useradd -u ${USER_ID} -g ${USER_GROUP} -d /data/gdeop/apicenter ${USER}

RUN mkdir -p ${LOG_PATH} && chmod a+x /data/gdeop/apicenter/ && chown -R ${USER_ID}:${USER_GROUP} ${LOG_PATH} /data/gdeop/apicenter/

 

USER ${USER}

#指定工作目录

WORKDIR /data/gdeop/apicenter

# mule的包添加到//data/gdeop/mule/ctg-eop/路径下

ADD jdk-8u171-linux-x64.tar.gz /data/gdeop/mule/eop-prod-cbs-api-center/jdk1.8/

ADD mule-standalone-3.8.1.tar.gz /data/gdeop/mule/eop-prod-cbs-api-center/

## 设置Java环境变量ENV

ENV JAVA_HOME /data/gdeop/mule/eop-prod-cbs-api-center/jdk1.8/jdk1.8.0_171

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.16

# ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.16

ENV PATH $PATH:$JAVA_HOME/bin

ENV LANG=en_US.UTF-8

ENV TZ=Asia/Shanghai

# mule应用包添加到//data/gdeop/mule/ctg-eop/路径下

COPY api-center2019011710308622.zip /data/gdeop/mule/eop-prod-cbs-api-center/mule-standalone-3.8.1/apps/

#mule开启服务

CMD /data/gdeop/mule/eop-prod-cbs-api-center/mule-standalone-3.8.1/bin/mule start  /data/gdeop/mule/eop-prod-cbs-api-center/api-center2019011710308622.zip && tail -100f /dev/null

5 Dockerfile中要注意的细节:如下图所示

 

mule-standalone-3.8.1目录确定解压后是一层还是两层 dockerfile中mule-standalone-3.8.1与解压后的目录一致  否则报没有这个文件或目录错

 

注意:

   假设你的容器名字叫做container,试试这样:

 

docker run container tail -f /dev/null

后面加命令tail -f /dev/null,就可以保持你的容器一直在前台运行了。

 

二 在cd mule下,执行以下命令构建镜像

docker build  -t 创建者/镜像名(自定义):版本号(自定义)  .

docker build  -t 镜像名(自定义):版本号(自定义)  .

 

如:docker build -t apicenter201810129268622:3.8.1 .

 

 

1 docker images查看:

待验证,命名是否支持大写字母

 

2 执行成功后,用docker run 开启新容器

docker run -d -p 8100:8100 --name apicenter201810129328622 tele/apicenter201810129268622:3.8.1

 

3用docker ps 查看成功

查看端口本地8100端口映射容器(mule应用)8100端口是否成功

4 限制容器内存

docker run -d --name 容器名 -m  数字(单位:k

m g ) --memory-swap=数字m  -p 本地端口:容器(应用端口)  镜像名:版本号

例:

docker run -d --name api_center2018101917368624 -m 4096m --memory-swap=4096m  -p 1001:1102  tele/api_center2018101917368622:1.0

 

5 Docker stats查看限制容器内存是否成功

 

三 查看目录的日志

切换到root用户

进入根目录 cd /

1 在用find . -name 文件名

find . -name api_center.log

 

 

四 服务器之间传文件

1 将本地目录拷贝到远程:

scp -r 目录名 用户名@计算机IP或者计算机名称:远程路径

scp -r /data/telecom/mule.tar.gz gdeop@110.120.119.110:/data/gdeop/

2 从远程将目录拷回本地

scp -r 用户名@计算机IP或者计算机名称:目录名 本地路径

 

 

 

五、本地目录日志挂载

1.本地创建日志目录

本地建mkdir  /data/gdeop/logs

2 容器日志挂载到物理机目录

例如:执行命令

docker run -d -v /data/gdeop/mule/logs:/data/gdeop/mule/mule-standalone-3.8.1/logs --name api-center-prod2018121410128622 -m 2048m --memory-swap=2048m -p 1101:1102 api-center-prod2018121410128622:1.0

猜你喜欢

转载自blog.csdn.net/fenlin88l/article/details/89380722
今日推荐