1.前世与今生
调皮一下,本次打包方式基于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包中的方式,不利于项目排错,不建议使用。