用Docker制作一个tomcat启动的ssm项目的镜像(Dockerfile)

用Docker制作一个tomcat启动的ssm项目的镜像(Dockerfile)

 

1、准备一个含有docker环境的Linux系统(本文用CentOS7);

2、新建一个文件夹专门用来保存打包镜像所需要的文件;

3、新建一个Dockerfile文件,里面的大致内容如下:

FROM nginx:1

#MAINTAINER
MAINTAINER someone <someone@email>

ENV DATABASE_HOST=127.0.0.1
ENV DATABASE_PORT=3306
ENV DATABASE_NAME=apmdb
ENV DB_USER_NAME=apm
ENV DB_PASSWORD=apm
ENV ELASTIC_SEARCH_HOST=127.0.0.1
ENV APP_VERSION=-1.0-SNAPSHOT
ENV APP_NAME=jarname

ENV INSTALL_URL=http://host:port/deploy/${APP_NAME}-${APP_VERSION}.jar
ENV JDK_URL=http://host:port/deploy/jdk-8u211-linux-x64.tar.gz
ENV HTML_URL=http://host:port/deploy/web-front.tar.gz
 
COPY  run.sh nginx.conf /usr/local/

#set timezone
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo 'Asia/Shanghai' >/etc/timezone \
    && curl -SL ${INSTALL_URL} -o /usr/local/${APP_NAME}.jar \
    && curl -SL ${JDK_URL} -o /usr/local/jdk-8u211-linux-x64.tar.gz \
    && curl -SL ${HTML_URL} -o /usr/local/web-front.tar.gz \
    && tar zxvf /usr/local/jdk-8u211-linux-x64.tar.gz -C /usr/local \
    && rm /usr/local/jdk-8u211-linux-x64.tar.gz \
    && tar zxvf /usr/local/web-front.tar.gz -C /usr/local \
    && rm /usr/local/web-front.tar.gz

EXPOSE 80
CMD ["/usr/local/run.sh"]

解释一下其中的参数含义:

FROM基于什么镜像的基础上制作该docker文件
MAINTAINER该docker文件的制作者和维护者信息
ENV环境变量(有时候会失效,尚不知原因)
COPY要将哪些文件复制粘贴到容器中的哪个路径下
RUN启动实例时需要执行的所有语句,以 \ && 为分隔符
EXPOSE容器内的端口
CMD指定启动实例所要运行的可执行文件

Dockerfile还可以有其他的参数,可以自行查询百度或官网,不再赘述。

4、上传需要打成镜像的jar包和zip包(请根据实际项目需要操作,本文的工程后台是jar,前台是zip);

5、准备五个可执行文件sh格式:buildDocker.sh、runDocker.sh、run.sh、deletePs.sh 和 deleteImage.sh;

6、创建镜像(buildDocker.sh):

sudo docker build -t workspace_name/tag_name:app_version .

7、运行镜像,创建实例(runDocker.sh):

sudo docker run -d -p33333:80 --env DATABASE_HOST=172.18.231.176
 --env DATABASE_PORT=3306 workspace_name/tag_name:app_version

8、容器内部运行(run.sh):

#!/bin/bash

#copy tomcat
cd /usr/local

cp nginx.conf /etc/nginx/

export JAVA_HOME=/usr/local/jdk1.8.0_211
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

nohup java ${JAVA_OPTS} -Dspring.profiles.active=docker -jar jarname.jar >>jarname.out 2>&1 &

#exec nginx -g 'daemon off;'
exec nginx -g 'daemon off;' 
tail -f apm-mi-web-api-1.0.0.out

#su - apm -s /bin/bash /usr/local/apache-tomcat-8.5.24/bin/catalina.sh run

9、删除docker环境中的实例进程(deletePs.sh):

sudo docker rm $(sudo docker ps -a|grep workspace_name/app_name |awk '{print $1}') -f

删除时的搜索方法其实就是linux的grep,根据实例的名称去搜肯定没错。

10、删除镜像(deleteImage.sh):

sudo docker rmi $(sudo docker images |grep workspace_name/app_name |awk '{print $3}')

必须先删除实例再删除镜像。

11、文件夹的结构如下图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值