改造工程
1.在工程的main目录下面新建docker目录
docker里面存放Dockerfile文件和run.sh脚本
2.编写(Dockerfile)文件
#基础镜像
FROM arm64v8/openjdk:latest
#维护者信息
MAINTAINER 维护者信息
#设置变量
ENV VERSION 1.0
ENV DEFAULTZENO ""
ENV SERVERPORT ""
#数据挂载点
VOLUME /tmp
#执行mkdir命令创建目录
RUN mkdir /eureka-service
#选择工作目录
WORKDIR /eureka-service
#将eureka-service-1.0.jar添加到工作目录里面并且重命名为app.jar
ADD eureka-service-${VERSION}.jar /eureka-service/app.jar
#将run.sh添加工作目录里面
ADD run.sh /eureka-service
#执行命令赋权限
RUN chmod a+x run.sh
#监听端口
EXPOSE $SERVERPORT
#执行容器内部脚本
CMD ["/eureka-service/run.sh"]
3.创建(run.sh)脚本文件
#!/bin/bash
java $DEFAULTZENO -jar app.jar --server.port=$SERVERPORT
4.在pom.xml中添加相关依赖
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
部署项目
5.打包项目,将jar包、Dockerfile、run.sh,这个三个文件上传到服务器中
6.编译成镜像
docker build -t docker-eureka .
7.启动容器
// eureka-9060
docker run -d --name docker-eureka9060 -p 9060:9060 -e DEFAULTZENO="-Deureka.client.serviceUrl.defaultZone=http://192.168.1.105:9070/eureka,http://192.168.1.105:9080/eureka" -e SERVERPORT=9060 docker-eureka
// eureka-9070
docker run -d --name docker-eureka9070 -p 9070:9070 -e DEFAULTZENO="-Deureka.client.serviceUrl.defaultZone=http://192.168.1.105:9060/eureka,http://192.168.1.105:9080/eureka" -e SERVERPORT=9070 docker-eureka
// eureka-9080
docker run -d --name docker-eureka9080 -p 9080:9080 -e DEFAULTZENO="-Deureka.client.serviceUrl.defaultZone=http://192.168.1.105:9060/eureka,http://192.168.1.105:9070/eureka" -e SERVERPORT=9080 docker-eureka
注意事项
1.arm64v8/openjdk,博主使用的是arm64位的系统。
需要根据自己的操作系统更换基础镜像
2.创建run.sh 脚本文件的时候 需要修改成linux系统中的转换符格式 不然会报一些奇怪的错误
需要修改成linux系统中的转换符格式
需要修改成linux系统中的转换符格式
需要修改成linux系统中的转换符格式
3.docker build -t docker-eureka . (.)表示当前目录 ,当前目录必须有Dockerfile文件