部署SpringBoot项目集成kafka
打包成jar
mvn clean package
Dockerfile
# 基础环境镜像
FROM java:8
# 定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷
VOLUME /tmp
# dockerfile 只能找到和他同级以及下面的文件 所以我们需要将jar 文件放在同目录
# ADD <本地> <容器内> 将 本机的文件,映射到 镜像容器中的位置
ADD ./app.jar /project/app.jar
ADD ./conf/application.yaml /project/conf/application.yaml
# WORKDIR 工作路径
WORKDIR /project
# 仅仅只是声明端口。
EXPOSE 9001
# 执行的命令 下边文件路径是要在容器中的路径
ENTRYPOINT ["java" ,"-jar","-Dspring.config.location=/project/conf/application.yaml","/project/app.jar"]
结构

conf文件夹下放着SpringBoot配置文件,通过Dockerfile中的执行命令进行引入
本项目中需要打包本地jar,所以将本地jar放在了项目根目录的lib文件夹中进行导入
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>11.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/aspose-words-18.10-jdk16.jar</systemPath>
</dependency>
需要配置pom.xml进行打包时导入
..... .....
<build>
........
<resources>
<!-- 打包本地jar-->
<resource>
<directory>${project.basedir}/lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</resources>
</build>
生成项目镜像
docker build -t app:v1 .
创建app容器
docker run -idt -p 9001:9001 --name app --link mysql1:mysql1 --link kafka:kakfa -v /data/app/file:/data/app/file app:v1
附上zookeeper & kafka & mysql
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
docker run -d --name kafka \
-p 9092:9092 \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=139.159.249.35:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://139.159.249.35:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
## 服务器内存太小难以承受,修改堆大小
-e KAFKA_HEAP_OPTS="-Xmx256M -Xms128M" wurstmeister/kafka
docker run -idt --name mysql1 -p 3306:3306 \
-v /data/docker_mysql/conf:/etc/mysql/conf.d \
-v /data/docker_mysql/logs:/logs \
-v /data/docker_mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 mysql:latest

浙公网安备 33010602011771号