zoukankan      html  css  js  c++  java
  • Dockerfile安装jdk1.8 、部署java项目

    基础指令

    FROM
      基于哪个镜像
    MAINTAINER
      用来写备注信息,例如作者、日期等。
    COPY
      复制文件进入镜像(只能用相对路径,不能用绝对路径)
    ADD
      复制文件进入镜像(可以用绝对路径,假如是压缩文件会解压)
    WORKDIR
      指定工作目录,假如路径不存在会创建路径
    ENV
      设置环境变量
    EXPOSE
      暴露容器端口到宿主机
    RUN
      在构建镜像的时候执行一条命令,作用于镜像层面
      shell命令格式:RUN yum install -y net-tools
      exec命令格式:RUN [ "yum","install" ,"-y" ,"net-tools"]
    ENTRYPOINT
      在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条
    CMD
      在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条
      容器启动后执行默认的命令或者参数,允许被修改

    安装jdk

    同级目录下创建一个Dockerfile,必须叫这个名字
    [root@localhost file]# ll
    total 181296
    -rw-r--r--. 1 root root         0 Oct 31 10:34 Dockerfile
    -rw-r--r--. 1 root root 185646832 Mar 28  2019 jdk-8u181-linux-x64.tar.gz
    
    编写Dockerfile
    [root@localhost file]# vim Dockerfile 
    [root@localhost file]# cat Dockerfile 
    
    # 基于cntos7,如果没有这个镜像那么它会下载这个镜像。
    FROM centos:7
    # 创建者(这个可以不写)
    MAINTAINER 吴磊
    # 为Dockerfile中所有RUN、CMD、ENTRYPOINT、COPY和ADD指令设定工作目录
    WORKDIR /usr
    # 执行命令(这里创建了一个目录)
    RUN mkdir /usr/local/java
    # 和copy一样,复制文件到指定目录,但是copy不能解压,add自动解压
    ADD jdk-8u181-linux-x64.tar.gz /usr/local/java
    # 重命名(不知道文件名可以现在宿主机解压后看一下)
    RUN ln -s /usr/local/java/jdk1.8.0_181 /usr/local/java/jdk 
    # 设置环境变量 
    ENV JAVA_HOME /usr/local/java/jdk 
    ENV JRE_HOME ${JAVA_HOME}/jre ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib ENV PATH ${JAVA_HOME}/bin:$PATH 执行dockerfile文件,创建的镜像名为jdk1.8,最后面的点表示当前目录(即dockerfile所在目录) [root@localhost file]# docker build -t='jdk1.8' . Sending build context to Docker daemon 201.8MB Step 1/10 : FROM centos:7 ---> 67fa590cfc1c Step 2/10 : MAINTAINER 吴磊 ---> Running in 82b0855b713c Removing intermediate container 82b0855b713c ---> 6ba6c5306ef5 Step 3/10 : WORKDIR /usr ---> Running in 53f979aa515b Removing intermediate container 53f979aa515b ---> 623ec9ba1c71 Step 4/10 : RUN mkdir /usr/local/java ---> Running in f074844393c7 Removing intermediate container f074844393c7 ---> 05a226b05d2f Step 5/10 : ADD jdk-8u181-linux-x64.tar.gz /usr/local/java ---> 99a917b34d5c Step 6/10 : RUN ln -s /usr/local/java/jdk1.8.0_181 /usr/local/java/jdk ---> Running in ccdf92640d65 Removing intermediate container ccdf92640d65 ---> 93d145bf041d Step 7/10 : ENV JAVA_HOME /usr/local/java/jdk ---> Running in bcded531db5a Removing intermediate container bcded531db5a ---> 715630eea4d3 Step 8/10 : ENV JRE_HOME ${JAVA_HOME}/jre ---> Running in c9aa4b7df0db Removing intermediate container c9aa4b7df0db ---> 97050481ab7a Step 9/10 : ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib ---> Running in 0123f3ea1213 Removing intermediate container 0123f3ea1213 ---> 8304bed832f1 Step 10/10 : ENV PATH ${JAVA_HOME}/bin:$PATH ---> Running in 66e39b8befef Removing intermediate container 66e39b8befef ---> 437729c49ac1 Successfully built 437729c49ac1 Successfully tagged jdk1.8:latest 查看所有的镜像,此时就多了一个jdk1.8 [root@localhost file]# docker images REPOSITORY TAG I MAGE ID CREATED SIZE jdk1.8 latest 437729c49ac1 14 seconds ago 584MB centos 7 67fa590cfc1c 2 months ago 202MB 制作容器并进到容器里面(能看到java版本号就没问题了) [root@localhost file]# docker run -it --name=jdk8 jdk1.8:latest /bin/bash [root@98c7b9225445 usr]# java -version java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode) [root@98c7b9225445 usr]#

    部署jar包

    [root@localhost demo]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    jdk1.8              latest              437729c49ac1        3 days ago          584MB
    centos              7                   67fa590cfc1c        2 months ago        202MB
    [root@localhost demo]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

    jar包同级目录创建Dockerfile [root@localhost demo]# ll total 15772 -rw-r--r--. 1 root root 16145495 Oct 31 22:03 app.jar -rw-r--r--. 1 root root 301 Nov 4 02:03 Dockerfile [root@localhost demo]# cat Dockerfile # 基于jdk镜像 FROM jdk1.8:latest # 创建一个目录 RUN mkdir /demo # 将jar包copy到指定目录 ADD app.jar /demo/app.jar # 启动命令 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Xmx512m","-Xms512m","/demo/app.jar"]

    创建镜像,指定名称demo版本号为1.0.0 [root@localhost demo]# docker build -t='demo:1.0.0' . Sending build context to Docker daemon 16.15MB Step 1/4 : FROM jdk1.8:latest ---> 437729c49ac1 Step 2/4 : RUN mkdir /demo ---> Running in 0f115368bbc0 Removing intermediate container 0f115368bbc0 ---> 50a35fe9a726 Step 3/4 : ADD app.jar /demo/app.jar ---> e240bfc406de Step 4/4 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Xmx512m","-Xms512m","/demo/app.jar"] ---> Running in 746468a020dc Removing intermediate container 746468a020dc ---> 3c66e4400e03 Successfully built 3c66e4400e03 Successfully tagged demo:1.0.0

    容器创建成功 [root@localhost demo]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE demo 1.0.0 3c66e4400e03 6 seconds ago 600MB jdk1.8 latest 437729c49ac1 3 days ago 584MB centos 7 67fa590cfc1c 2 months ago 202MB

    启动容器,映射到宿主机的9999端口 [root@localhost demo]# docker run -di --name=demo1 -p 9999:8080 demo:1.0.0 64584a03cd6f06b7750d4d30993186d7a8ed0c3212eccb0fa1573b9bedf935e7 [root@localhost demo]#

       

  • 相关阅读:
    【乱侃】How do they look them ?
    【softeware】Messy code,some bug of Youdao notebook in EN win7
    【随谈】designing the login page of our project
    【web】Ad in security code, making good use of resource
    SQL数据库内存设置篇
    关系数据库的查询优化策略
    利用SQL未公开的存储过程实现分页
    sql语句总结
    sql中使用cmd命令注销登录用户
    SQLServer 分页存储过程
  • 原文地址:https://www.cnblogs.com/wlwl/p/11774508.html
Copyright © 2011-2022 走看看