如果要有自己的一个docker java 基础环境镜像怎么做?

方式一

其实hub.docker.com已经有这个镜像了

https://hub.docker.com/_/openjdk

只要按照他的说明进行操作,就可以创建你想要的JDK版本 docker
假设项目JARsentinel-dashboard.jar,存放的文件位置是当前目录/demo
那么在此目录下/demo执行命令,创建容器

docker run --name demo  -v "$PWD":/usr/src/myapp \
-w /usr/src/myapp \
-p 8080:8080 \
openjdk:8u191-jdk-alpine3.8 java -jar sentinel-dashboard.jar

注意:$PWD 就是当前目录
-v 映射目录
-w 设置容器工作目录
-p 映射端口
openjdk:8u191-jdk-alpine3.8 镜像和tag版本
java -jar sentinel-dashboard.jar 执行的命令

方式二

这边对方式一的镜像进行一个处理
Dockfile

#镜像源
FROM openjdk:8u191-jdk-alpine3.8
MAINTAINER foxiswho@gmail.com
#镜像变量
ARG version
ARG ip
ARG port# 镜像内部自定义环境变量,并赋值
# sentinel version
ENV SENTINEL_VERSION ${version:-1.4.1}
#host
ENV IP ${ip:-localhost}
#ip
ENV PORT ${port:-8080}# 设置项目目录
# sentinel home
ENV SENTINEL_HOME  /opt/
ENV SENTINEL_LOGS  /opt/logs# 设置时区
#tme zone
RUN rm -rf /etc/localtime \
&& ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 创建日志目录
# create logs
RUN mkdir -p ${SENTINEL_LOGS}# 复制JAR项目
COPY sentinel-dashboard.jar ${SENTINEL_HOME}# 设置JAR 执行权限
RUN chmod -R +x ${SENTINEL_HOME}/*jar#设置镜像目录
VOLUME ${SENTINEL_LOGS}#设置工作目录
WORKDIR  ${SENTINEL_HOME}
# 对外短裤
EXPOSE ${PORT}
# 执行程序
CMD java ${JAVA_OPTS} -jar sentinel-dashboard.jar

编译镜像

docker build -t sentinel:1.4.1 ./

生成容器

docker run --name demo  -v "$PWD":/opt -p 8080:8080 sentinel:1.4.1

方式三 使用docker-compose

Dockerfile

FROM openjdk:8u191-jdk-alpine3.8
MAINTAINER foxiswho@gmail.comARG version
ARG ip
ARG port# sentinel version
ENV SENTINEL_VERSION ${version:-1.4.1}
#host
ENV IP ${ip:-localhost}
#ip
ENV PORT ${port:-8080}# sentinel home
ENV SENTINEL_HOME  /opt/
ENV SENTINEL_LOGS  /opt/logs#tme zone
RUN rm -rf /etc/localtime \
&& ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime# create logs
RUN mkdir -p ${SENTINEL_LOGS}# test file
COPY sentinel-dashboard.jar ${SENTINEL_HOME}# add scripts
#COPY scripts/* /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh \
&& ln -s /usr/local/bin/docker-entrypoint.sh /docker-entrypoint.sh#
RUN chmod -R +x ${SENTINEL_HOME}/*jarVOLUME ${SENTINEL_LOGS}WORKDIR  ${SENTINEL_HOME}EXPOSE ${PORT}CMD java ${JAVA_OPTS} -jar sentinel-dashboard.jar

docker-compose.yml 文件

version: '3.5'services:demo:build: ./hostname: democontainer_name: demoports:- "8080:8080"environment:- JAVA_OPTS=-Dcsp.sentinel.log.dir=/opt/logs -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard  -Djava.security.egd=file:/dev/./urandomvolumes:- ./:/opt/logs- ./logs:/opt/logs

当前目录下直接执行

docker-compose up

方式四 使用docker-compose

Dockerfile

FROM openjdk:8u191-jdk-alpine3.8
MAINTAINER foxiswho@gmail.comARG version
ARG ip
ARG port# sentinel version
ENV SENTINEL_VERSION ${version:-1.4.1}
#host
ENV IP ${ip:-localhost}
#ip
ENV PORT ${port:-8080}# sentinel home
ENV SENTINEL_HOME  /opt/
ENV SENTINEL_LOGS  /opt/logs#tme zone
RUN rm -rf /etc/localtime \
&& ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime# create logs
RUN mkdir -p ${SENTINEL_LOGS}# test file
COPY sentinel-dashboard.jar ${SENTINEL_HOME}# add scripts
COPY scripts/* /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh \
&& ln -s /usr/local/bin/docker-entrypoint.sh /docker-entrypoint.sh#
RUN chmod -R +x ${SENTINEL_HOME}/*jarVOLUME ${SENTINEL_LOGS}WORKDIR  ${SENTINEL_HOME}EXPOSE ${PORT}ENTRYPOINT ["docker-entrypoint.sh"]CMD java ${JAVA_OPTS} -jar sentinel-dashboard.jar

创建scripts/docker-entrypoint.sh文件
内容如下

#!/bin/bashexport JAVA_OPTS="-Dserver.port=${PORT} -Dcsp.sentinel.dashboard.server=${IP}:${PORT} -Dcsp.sentinel.log.dir=${SENTINEL_LOGS} -Dproject.name=sentinel-dashboard -Djava.security.egd=file:/dev/./urandom ${JAVA_OPTS}"echo "JAVA_OPTS============"
echo "JAVA_OPTS============"
echo "JAVA_OPTS============"
echo $JAVA_OPTSexec "$@"

在根目录下 创建docker-compose.yml
内容如下

version: '3.5'services:demo:build: ./hostname: democontainer_name: demoports:- "8080:8080"environment:- JAVA_OPTS=-Dcsp.sentinel.log.dir=/opt/logsvolumes:- ./:/opt/logs- ./logs:/opt/logs

当前目录下直接执行

docker-compose up

方式五 其他

直接看地址 https://github.com/foxiswho/docker-sentinel
镜像地址 https://hub.docker.com/r/foxiswho/sentinel
scripts目录下,创建docker-entrypoint.sh文件.
内容如下

#!/bin/bash
export JAVA_OPTS="-Dserver.port=${PORT} -Dcsp.sentinel.dashboard.server=${IP}:${PORT} -Dcsp.sentinel.log.dir=${SENTINEL_LOGS} -Dproject.name=sentinel-dashboard -Djava.security.egd=file:/dev/./urandom ${JAVA_OPTS}"echo "JAVA_OPTS============"
echo "JAVA_OPTS============"
echo "JAVA_OPTS============"
echo $JAVA_OPTSexec "$@"

内容意思是设置JAVA_OPTS内容的环境变量

在根目录中创建Dockerfile

# 镜像源
FROM centos:7
#作者
MAINTAINER foxiswho@gmail.com
# 镜像自定义参数变量,用于创建镜像时传入
ARG version
ARG ip
ARG port#自定义镜像容器内,环境变量
# sentinel version
ENV SENTINEL_VERSION ${version:-1.4.1}
#host
ENV IP ${ip:-localhost}
#ip
ENV PORT ${port:-8080}#设置项目目录及日志目录
# sentinel home
ENV SENTINEL_HOME  /opt/
ENV SENTINEL_LOGS  /opt/logs#tme zone 设置时区
RUN rm -rf /etc/localtime \
&& ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 安装一些软件
RUN yum install -y java-1.8.0-openjdk-headless unzip gettext nmap-ncat openssl wget\&& yum clean all -y# create logs 创建日志目录
RUN mkdir -p ${SENTINEL_LOGS}#下载指定版本的软件,并移动到指定的目录
# get the version
RUN cd /  \&& wget https://github.com/alibaba/Sentinel/releases/download/${SENTINEL_VERSION}/sentinel-dashboard-${SENTINEL_VERSION}.jar -O sentinel-dashboard.jar \&& mv sentinel-dashboard.jar ${SENTINEL_HOME}
# test file
#COPY sentinel-dashboard.jar ${SENTINEL_HOME}#复制自定义的shell 文件到指定目录下
# add scripts
COPY scripts/* /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh \
&& ln -s /usr/local/bin/docker-entrypoint.sh /opt/docker-entrypoint.sh# 设置项目文件为可执行文件权限
RUN chmod -R +x ${SENTINEL_HOME}/*jar
# 映射目录
VOLUME ${SENTINEL_LOGS}
#工作目录
WORKDIR  ${SENTINEL_HOME}
#映射端口
EXPOSE ${PORT}
# 用于设置容器启动后的第一个命令
ENTRYPOINT ["docker-entrypoint.sh"]
#用于设置容器启动的第一个命令的默认参数
CMD java ${JAVA_OPTS} -jar sentinel-dashboard.jar

其他说明

本案例
使用的Sentinel 版本
https://github.com/alibaba/Sentinel/releases/tag/1.4.1
案例地址
https://github.com/foxiswho/docker-java-sentinel-demo

一个创建 docker java jar项目案例 docker-sentinel相关推荐

  1. 一个简单的Java计时器项目,附源码

    学Java开发的小伙伴都会想着做一些项目来检验自己的学习成果,今天小千就来分享一个简单的Java计时器项目,源码也放在文中,大家可以参考一下. Java计时器项目 开发环境:win8+eclipse+ ...

  2. docker运行jar包_Jenkins+Docker+Springboot单机版持续集成部署

    Jenkins+Docker+SpringBoot持续集成流程说明 安装配置jenkins 安装jenkins可直接官网下载对应的jar包直接运行,也可使用docker运行,下载完后直接运行,并下载d ...

  3. 快速新建一个纯净的java pom项目 project

    前期的java环境安装就不再阐述了 使用步骤 java -jar project-creator-0.1.jar projectName [war] 1> 比如你要创建一个项目名字叫 smile ...

  4. docker java 内存_Java和Docker限制的那些事儿

    [编者的话]Java和Docker不是天然的朋友. Docker可以设置内存和CPU限制,而Java不能自动检测到.使用Java的Xmx标识(繁琐/重复)或新的实验性JVM标识,我们可以解决这个问题. ...

  5. Idea创建简单Java Web项目并部署Servlet

    1.打开Idea,创建JAVA Web项目 在WEB-INF目录下创建classes和lib文件夹 配置编译输出路径为刚才新建的classes文件夹 配置依赖jar包加载路径 添加tomcat ser ...

  6. RPM打包java jar项目

    环境:contos 8 + java jar 目标,使用RPM把jar和config打成包,让客户用解压即用. 安装RPM yum install rpm rpm-build rpmdevtools ...

  7. 做一个完整的Java Web项目太难了,因为这些你不会!

    作者:元素侠Jason 链接:https://blog.csdn.net/JasonLiuLJX 最近自己做了几个Java Web项目,有公司的商业项目,也有个人做着玩的小项目,写篇文章记录总结一下收 ...

  8. 做一个完整的Java Web项目需要掌握的技能

    转自:  https://blog.csdn.net/JasonLiuLJX/article/details/51494048 ------------------------------------ ...

  9. javaweb做什么能赚钱_做一个完整的Java Web项目需要掌握的技能

    原文链接:http://blog.csdn.net/JasonLiuLJX/article/details/51494048 最近自己做了几个Java Web项目,有公司的商业项目,也有个人做着玩的小 ...

  10. 精通java ee项目案例_精通JavaEE项目案例

    第1章 Java EE开发入门 1 1.1 基本概念 1 1.1.1 Java EE API 1 1.1.2 MVC模型 2 1.1.3 JSP讨论 3 1.1.4 Servlet讨论 4 1.1.5 ...

最新文章

  1. 一个6年的菜鸟,在4年之前做的一些功能(二)
  2. fedora 使用 vnc 远程 fedora 28 主机
  3. LiteOS:盘点那些重要的数据结构
  4. Spring3之InternalResourceViewResolver
  5. matlab可以写类,matlab如何写一个类
  6. 【FlexSim2019】仿真软件入门笔记:基本操作、快捷键、事件驱动、控制与程序
  7. java 求一二次方程的根_java求一元二次方程的根
  8. PAT乙级做题部分总结
  9. 移动金融客户端应用软件备案、中国支付清算协会“聚合支付”业务备案、工业和信息化部网站备案系统(ICP备案)
  10. Map接口及其实现类
  11. 计算机控制分离性原理是什么,分离原理
  12. 尝试一下LLJ大佬的理论AC大法
  13. 苹果电脑重置登录密码
  14. 关闭Linux防火墙
  15. springboot发送邮件-163邮箱
  16. 物联网SIM卡和SIM卡真的不是一回事
  17. 【VMware】虚拟机不能全屏的解决方法
  18. 信号与系统学习笔记 第三章
  19. 11微服务认证与授权
  20. c语言bzero函数头文件,嵌入q式c语言-文件操用.doc

热门文章

  1. 总结htmlfile:未知的运行时错误
  2. python辅助 sublime_Sublime+python设置
  3. linux系统可以玩星际争霸吧,在Linux下可用Wine安装和运行星际争霸2、水煮三国
  4. 利用sklearn对红酒数据集分类
  5. HR图像添加运动焦散模糊【Matlab】
  6. ubuntu上下左右变成BD
  7. 正则化、岭回归与LASSO回归(套索回归)
  8. python数据分析用什么框架_用python选择用于内存大的数据分析的框架
  9. completion time, flow time和processing time 区别
  10. C++ std::thread::hardware_concurrency() 获取CPU核心数