docker实现多个jar部署在一个容器中(版本2)
docker实现多个jar部署在一个容器中在之前的文章中介绍了如何在docker中部署多个实例,这篇文章讲演化后的第二版本的docker部署多jar包。Dockerfilecentos7+java环境FROM centos:7MAINTAINER linwenyaoWORKDIR /usrRUN mkdir/usr/local/javaADD jdk-8u181-linux-x...
·
docker实现多个jar部署在一个容器中
在之前的文章中介绍了如何在docker中部署多个实例,这篇文章讲演化后的第二版本的docker部署多jar包。
Dockerfile
centos7+java环境
FROM centos:7
MAINTAINER linwenyao
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u181-linux-x64.tar.gz /usr/local/java/
ENV JAVA_HOME /usr/local/java/jdk1.8.0_181
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
添加语言包:
FROM registry.cn-hangzhou.aliyuncs.com/lin-service/java-env:1.0.0
MAINTAINER linwenyao
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& yum -y update \
&& yum -y install kde-l10n-Chinese \
&& yum -y reinstall glibc-common \
&& localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 \
&& echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf \
&& source /etc/locale.conf \
&& yum clean all
ENV LANG=zh_CN.UTF-8 \
LC_ALL=zh_CN.UTF-8
另外把maven的pom.xml文件添加如下配置:
//添加环境变量
<profiles>
<profile>
<id>cloud</id>
<properties>
<spring.profiles.active>cloud</spring.profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<spring.profiles.active>test</spring.profiles.active>
</properties>
</profile>
<profile>
<id>local</id>
<properties>
<spring.profiles.active>local</spring.profiles.active>
</properties>
</profile>
</profiles>
pom.xml中还要添加如下配置:
//修改配置文件中的标识符,因为在.yml中$标识符被占用,所以需要改成#
<properties>
<resource.delimiter>#</resource.delimiter>
</properties>
//定义占位符
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources.${spring.profiles.active}</directory>
<filtering>false</filtering>
</resource>
</resources>
</build>
并且springboot的配置文件bootstrap.yml改成:
spring:
profiles:
active: #spring.profiles.active#
重点是#spring.profiles.active#,#是标识符,spring.profiles.active是占位符
然后就是生成最后的容器了:
FROM registry.cn-hangzhou.aliyuncs.com/lin-service/java-env:1.1.0
MAINTAINER linwenyao
COPY xxx/target/xxx.jar /app1.jar
COPY xxx/xxx/target/xxx.jar /app2.jar
COPY xxx/xxx/target/xxx.jar /app3.jar
COPY xxx/xxx/target/xxx.jar /app4.jar
RUN echo -e \
"#!/bin/sh\n"\
"nohup java -jar /app1.jar > 1.log &\n"\
"nohup java -jar /app2.jar > 2.log &\n"\
"nohup java -jar /app3.jar >3.log &"\
>> /usr/bin/start.sh
RUN chmod +x /usr/bin/start.sh
CMD nohup sh -c "start.sh && java -jar /app4.jar"
jenkins的配置也要改,首先maven的build命令:
-Pxxx就是使用profiles中配置的环境变量名称
然后就是build:
docker build -t registry.cn-hangzhou.aliyuncs.com/xxx:1.1.0 .
docker run -d --name xxx -p 8105:8105 registry.cn-hangzhou.aliyuncs.com/xxx:1.1.0
docker push registry.cn-hangzhou.aliyuncs.com/xxx:1.1.0
似乎还有第三个版本,等我想起来再补充
更多推荐
已为社区贡献1条内容
所有评论(0)