目录
1.前世与今生
2.Dockerfile
3.docker-compose.yml
4.生成镜像并启动容器
4.1以上文件包括jar包放到一个目录里面去,如下:
4.2执行命令
4.3常用排错命令
1.前世与今生
![:lol:](https://img-blog.csdnimg.cn/img_convert/9525dc5bd3461dc94d1b2a3c51de67cd.gif) 调皮一下,本次打包方式基于Dokerfile进行镜像制作,docker-compose进行容器部署,需要的准备好的只是一个简单的可执行jar包。这种方式对于springboot项目最为合适。同志们可以跟我的步骤放心执行,这种方式,生产环境使用后我才整理出来,说白了就是笔记。
另外一种方式基于maven进行打包上次到镜像仓库的方式,后面有机会在发出来。
2.Dockerfile
FROM java:8
# 将targer目录下的jar包复制到docker容器/home/springboot目录下面目录下面
ADD zkjy-data-original-server.jar /home/springboot/zkjy-data-original-server.jar
RUN bash -c 'touch /zkjy-data-original-server.jar'
# 声明服务运行在38081端口
EXPOSE 38081
# 执行命令
#ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /home/springboot/app.jar
#ENTRYPOINT ["sh", "-c", "java ${JVM_OPTS} ${EXT_OPTS} -jar /home/springboot/app.jar > /dev/null 2>&1 &"]
CMD java ${JVM_OPTS} ${EXT_OPTS} -jar /home/springboot/zkjy-data-original-server.jar
# 指定维护者名称
MAINTAINER JIERUI
3.docker-compose.yml
version: '3.7'
services:
zkjy-data-original-server:
image: zkjy/zkjy-data-original-server:1.0.0
restart: "always"
ports:
- 38081:38081
working_dir: /home/springboot
container_name: "zkjy-data-original-server"
volumes:
- "/home/docker/zkjy-data-original-server/config:/home/springboot/config"
environment:
- JVM_OPTS=-Xms512m -Xmx1024m -Xmn256m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:+UseG1GC -XX:+PrintGCDetails -XX:MaxGCPauseMillis=100 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/dump.log
- EXT_OPTS=-Djava.awt.headless=true -Dfile.encoding=UTF-8
4.生成镜像并启动容器
4.1以上文件包括jar包放到一个目录里面去,如下:
4.2执行命令
docker build -t zkjy/zkjy-data-original-server:1.0.0 . #生成镜像文件
docker-compose up -d #启动容器
#配置正确的情况下,到这里容器应该正常启动了
4.3常用排错命令
docker rmi zkjy/zkjy-data-original-server:1.0.0 #删除镜像
docker logs -f zkjy-data-original-server #查看日志
docker exec -it zkjy-data-original-server /bin/bash #进入容器内部
我这里的jar包依赖于外部配置文件,所有我的docker-compose里面有个外部挂载目录,此目录和jar保持同级,这样可以动态加载配置启动,具体情况具体处理,如果,jar包包含了配置文件在里面,那么就不需要挂载,但是这种打在jar包中的方式,不利于项目排错,不建议使用。