docker创建java镜像文件总结 快速上手
本例子使用my-docker-demo-springboot 项目作为java程序项目,本例子前提是已经搭建好docker环境
- 基础方式
- 高级方式
基础方式
已经将项目打包成可执行的jar文件
jar包放入一个工作文件夹内
在这个文件夹里新建Dockerfile文件用来创建镜像
Dockerfile文件内容
FROM ascdc/jdk8 #使用基础镜像 ascdc/jdk8
MAINTAINER liuyijiang #说明镜像的作者信息
WORKDIR "/data/service"
RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone #配置容器时间
COPY my-docker-demo-springboot.jar my-docker-demo-springboot.jar #当前文件夹内的jar包 加到镜像打包的文件夹下
EXPOSE 5678 容器暴露端口5678
ENTRYPOINT ["nohup","java","-jar","my-docker-demo-springboot.jar","&"]
一个较为复杂的java启动命令 ENTRYPOINT ["java","-Xmx512M","-Xms256M","-XX:+UseG1GC","-Xss256k","-XX:-PrintGC" ,"-XX:+PrintGCDetails" ,"-XX:+PrintGCApplicationStoppedTime" ,"-XX:+PrintGCApplicationConcurrentTime" ,"-XX:+PrintGCTimeStamps" ,"-XX:+PrintGCDateStamps" , "-XX:+HeapDumpOnOutOfMemoryError" ,"-Xloggc:/data/service/logs/gc.log" , "-jar","saas-task-server.jar"]
利用docker build命令创建镜像
docker build -t [镜像名称] . //注意最后面的那个. 表示当前路径
可以看到镜像已经创建完成
运行镜像
docker run -d -p 5999:5588 springboot #-d 表示后台启动
docker exec -it [容器id] /bin/bash #进入容器
查看镜像日志
访问接口 http://192.168.0.210:5999/echo?name=kkkea 可以看到数据
高级的方式
高级方式主要是不同是在于启动程序的方式
这里使用的是用户中心的例子 dockerfile如下,主要是启动脚本也放入镜像中这样可以支持更多的启动命令
FROM registry.cn-chengdu.aliyuncs.com/medcrab-dev/centosjdk8:v1
VOLUME ["/data/service/logs","/docker/tmp"]
WORKDIR "/data/service"
LABEL base.name="用户中心"
LABEL base.desc="实现用户的统一登录验证"
COPY medcrab-user-server.jar medcrab-user-server.jar
COPY start.sh start.sh
ENTRYPOINT ["sh","start.sh"]