第1步:安装Docker,略;
第2步:下载openjdk:
docker pull openjdk
第3步:查看下载后的openjdk,应如图所示:
第4步:创建工作目录
在工作目录下,创建工作区:
我的工作区设置在/home/work,
在work目录下,创建三个目录,分别是:
conf,jar,logs,目录结构如图:
其中conf目录放置项目的yml和其他配置xml文件,jar目录放置打包jar文件,logs目录放置将来的logs文件。
第5步:在work目录下创建Dockerfile文件,内容如下:
FROM docker.io/openjdk
EXPOSE 8080
ENTRYPOINT ["java","-jar","/jar/app.jar","--logging.config=/conf/logback-spring.xml","--spring.config.location=/conf/application.yml"]
(其中的xml文件和yml文件很常规,大家肯定知道是什么),注意,最后一行,/jar/app.jar,表明,将来容器将运行/jar/app.jar文件。而这个文件将会映射到宿主机上。/conf/下的其他两个文件也是同理。
第6步:进行工程打包,其中的pom.xml文件,需要加入以下插件:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> <resources> <resource> <filtering>true</filtering> <directory>src/main/resources</directory> <excludes> <exclude>**/*.yml</exclude> </excludes> </resource> </resources> </build>
第7步:上传文件。
将打包好的jar文件,命名为app.jar,上传至/home/work/jar目录下。并将准备的好的application.yml和日志配置文件logback-spring.xml上传到conf目录下。
第8步:使用docker,根据Dockerfile,创建一个工程镜像。
docker build -t work/mywork:20201231 --rm=true .
注意:
1、work/mywork:20201231,这个名字可以按照 项目/模块(微服务):日期,这样看起来比较清晰,不容易混乱。也可以随便起
2、--rm=true是为了删除制作镜像过程中的临时文件
3、最后一个“.”是不可以省略的。
此刻,执行“docker images”,可以看到自己刚刚制作好的镜像。
第9步:使用镜像,创建容器:
docker run -dit --name mywork -p 8080:8080 -v /home/work/conf:/config -v /home/work/jar:/jar -v /home/work/logs:/logs work/mywork:20201231
-v是将宿主机上的目录映射到容器上,因此容器在执行java -jar /jar/app.jar 时,其实加载的就是宿主机上的jar,访问的也是宿主机conf目录下的application.yml文件。
第10步:用docker ps查看容器的运行状况。
(如果容器启动失败,可用docker ps -a查看容器状态。)
如果上面的操作都没问题,此刻肯定是可以成功运行了。
以后无论是更新jar,还是修改yml文档,都直接在宿主机上修改,然后,重新启动容器即可。
docker restart 容器名或容器id
最后,可用以下命令查看容器的日志,也可以直接到logs目录下,打开log文件,查看运行结果:
docker logs -f -t --since=60m xxxxxxxx(容器名或容器id) #这是查看最近60分钟之内的日志,时间可以更改
上述过程,亲手在两台服务器上部署成功,也可以使用docker-compose部署,整个过程非常简单有效。
2020年12月31日最后一天,算是献礼吧