转自:https://blog.csdn.net/zy910525/article/details/77966729
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zy910525/article/details/77966729
1、 修改pom.xml
追加下面内容:
<build>
<plugins>
<!-- tag::plugin[]-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.3</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- end::plugin[]-->
</plugins>
</build>
<properties>
<docker.image.prefix>msg</docker.image.prefix>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
2、 工程中创建src/main/docker文件夹,创建Dockerfile文件,添加下面内容,pushMessage-0.0.1-SNAPSHOT.jar改成自己的jar包名。
FROM java:latest
ADD pushMessage-0.0.1-SNAPSHOT.jarapp.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT["java","-jar","/app.jar"]
FROM java:latest---》》使用docker中已存在的java:latest镜像
3、 eclipse执行mvn package docker:build命令,工程target\docker目录下有编译后的文件
4、 拷贝编译后的两个文件的到服务器,cd到目录,执行【sudo docker build -t="***" .】命令。
-t 添加tag, . 代表当前目录(注意 “.”的存在)
5、 执行docker images命令查看生成的镜像。
6、 执行docker run --name {容器名} -p {宿主机端口}:{docker端口} –v {宿主机目录}:{docker日志目录} -d {镜像ID:latest}
创建并启动容器。
考虑到以后会做负载均衡,不可能每个jar包都做一个镜像,用以下方法可以实现一个image加载不同的application.properties创建多个容器:
以推送接口为例:
1、 Dockerfile保持不变
2、 创建镜像【sudo docker build -t="msg/push" .】
3、 为不同端口配置文件创建目录/opt/pushMessage/config/8098。
4、 目录内放置该端口的配置文件。
5、 创建日志目录/opt/pushMessage/logs/8098
6、 执行命令创建容器:
docker run --name pushmsg8098 -p 8098:8098 -v/opt/pushMessage/logs/8098:/logs -v/opt/pushMessage/config/8098/application.properties:/application.properties -dmsg/push:latest
其他端口同样处理,创建单独的配置文件并在启动容器时加载该配置文件。
---------------------
作者:代码的寂寞
来源:CSDN
原文:https://blog.csdn.net/zy910525/article/details/77966729
版权声明:本文为博主原创文章,转载请附上博文链接!