一 创建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端口是否成功
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