zoukankan      html  css  js  c++  java
  • 使用node镜像基于dockerfile自动打包成可供jdk及maven运行环境

    1.首先确保docker中是否有需要的node镜像

    [root@docker ~]# docker images

    REPOSITORY        TAG       IMAGE ID       CREATED             SIZE

    node              v5        19324e52baaa   19 minutes ago      1.51GB

    node              v4        3822b318543b   3 hours ago         1.51GB

    openjdk           v3        3bda6baa6ad3   4 hours ago         488MB

    node              v3        6dcc49df843e   26 hours ago        958MB

    openjdk           latest    db72010b969f   2 weeks ago         467MB

    jenkins/jenkins   latest    5ef12c53cfdc   2 weeks ago         571MB

    nginx             latest    35c43ace9216   5 weeks ago         133MB

    node              11.15.0   5b97b72da029   20 months ago       904MB

    这里我用的是node-11.15.0版本。

    2.编写Dockerfile执行文件(Dockerfile是用来构建镜像的文本文件,包含了构建镜像所需的指令和说明,网上有详解)

    [root@docker ~]# vim Dockerfile

    FROM node:11.15.0

    USER root

    #安装JDK

    RUN mkdir /var/tmp/jdk/

    COPY jdk-8u191-linux-x64.tar.gz /var/tmp/jdk/

    RUN tar xzf /var/tmp/jdk/jdk-8u191-linux-x64.tar.gz -C /var/tmp/jdk

    #安装maven

    RUN mkdir /var/tmp/maven

    COPY apache-maven-3.6.3-bin.tar.gz /var/tmp/maven/

    RUN tar xzf /var/tmp/maven/apache-maven-3.6.3-bin.tar.gz -C /var/tmp/maven

    #设置环境变量

    ENV JAVA_HOME /var/tmp/jdk/jdk1.8.0_191

    ENV M2_HOME /var/tmp/maven/apache-maven-3.6.3

    ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$M2_HOME/bin

    RUN echo 'export JAVA_HOME=/var/tmp/jdk1.8.0_191' >> /etc/profile

    RUN echo 'export JAVA_BIN=/var/tmp/jdk1.8.0_191/bin' >> /etc/profile

    RUN echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile

    RUN echo 'export MVN_HOME=/var/tmp/apache-maven-3.6.3' >> /etc/profile

    RUN echo 'export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL' >> /etc/profile

    RUN echo 'export PATH=$PATH:$NGINX_HOME/sbin:$JAVA_HOME/bin:$MVN_HOME/bin' >> /etc/profile

    Dockerfile

    3.执行Dockerfile生成镜像

    [root@docker ~]# docker build -t node:v9 .

    Sending build context to Docker daemon  878.7MB

    Step 1/19 : FROM node:11.15.0

     ---> 5b97b72da029

    Step 2/19 : USER root

     ---> Using cache

     ---> 92bf34a03b9a

    Step 3/19 : RUN mkdir /var/tmp/jdk/

     ---> Using cache

     ---> eb8e3a1de0e8

    Step 4/19 : COPY jdk-8u191-linux-x64.tar.gz /var/tmp/jdk/

     ---> Using cache

     ---> 1dc01b850891

    Step 5/19 : RUN tar xzf /var/tmp/jdk/jdk-8u191-linux-x64.tar.gz -C /var/tmp/jdk

     ---> Running in 4717d0c40e5c

    Removing intermediate container 4717d0c40e5c

     ---> 3e6b020edb22

    Step 6/19 : RUN mkdir /var/tmp/maven

     ---> Running in 95f9bba903a9

    Removing intermediate container 95f9bba903a9

     ---> c13c405247cb

    Step 7/19 : COPY apache-maven-3.6.3-bin.tar.gz /var/tmp/maven/

     ---> d78abb3d4476

    Step 8/19 : RUN tar xzf /var/tmp/maven/apache-maven-3.6.3-bin.tar.gz -C /var/tmp/maven

     ---> Running in 5f18b572e61a

    Removing intermediate container 5f18b572e61a

     ---> 8acc19c2b928

    Step 9/19 : ENV JAVA_HOME /var/tmp/jdk/jdk1.8.0_191

     ---> Running in a58594d86f9b

    Removing intermediate container a58594d86f9b

     ---> 191c4a506514

    Step 10/19 : ENV M2_HOME /var/tmp/maven/apache-maven-3.6.3

     ---> Running in 7ec931c7c0bc

    Removing intermediate container 7ec931c7c0bc

     ---> ca44e210bffb

    Step 11/19 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$M2_HOME/bin

     ---> Running in ad814776f208

    Removing intermediate container ad814776f208

     ---> 4254da22ed79

    Step 12/19 : RUN echo 'export JAVA_HOME=/var/tmp/jdk1.8.0_191' >> /etc/profile

     ---> Running in a666351d08e7

    Removing intermediate container a666351d08e7

     ---> 1260e35852df

    Step 13/19 : RUN echo 'export JAVA_BIN=/var/tmp/jdk1.8.0_191/bin' >> /etc/profile

     ---> Running in 5ccd9fe03edb

    Removing intermediate container 5ccd9fe03edb

     ---> 41eeaa763e91

    Step 14/19 : RUN echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile

     ---> Running in 2ff900bd0e0e

    Removing intermediate container 2ff900bd0e0e

     ---> 5092b8916d61

    Step 15/19 : RUN echo 'export MVN_HOME=/var/tmp/apache-maven-3.6.3' >> /etc/profile

     ---> Running in cdb149501028

    Removing intermediate container cdb149501028

     ---> 10abcbe9327c

    Step 16/19 : RUN echo 'export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL' >> /etc/profile

     ---> Running in d9ef883d417b

    Removing intermediate container d9ef883d417b

     ---> 872e166a7668

    Step 17/19 : RUN echo 'export PATH=$PATH:$NGINX_HOME/sbin:$JAVA_HOME/bin:$MVN_HOME/bin' >> /etc/profile

     ---> Running in 73529414e90c

    Removing intermediate container 73529414e90c

     ---> c518c746cfd6

    Step 18/19 : CMD mvn -version

     ---> Running in bca5f53521cc

    Removing intermediate container bca5f53521cc

     ---> bd3daccd93f4

    Step 19/19 : CMD java -version

     ---> Running in 990e39ccc8be

    Removing intermediate container 990e39ccc8be

     ---> 19324e52baaa

    Successfully built 19324e52baaa

    Successfully tagged node:v9

    执行完显示成功。

    4.查看生成的镜像

    [root@docker ~]# docker images

    REPOSITORY        TAG       IMAGE ID       CREATED             SIZE

    node              v9        19324e52baaa   48 minutes ago      1.51GB

    node              v5        aee8be290eae   2 hours ago         1.51GB

    node              v4        3822b318543b   3 hours ago         1.51GB

    openjdk           v3        3bda6baa6ad3   4 hours ago         488MB

    node              v3        6dcc49df843e   27 hours ago        958MB

    openjdk           latest    db72010b969f   2 weeks ago         467MB

    jenkins/jenkins   latest    5ef12c53cfdc   2 weeks ago         571MB

    nginx             latest    35c43ace9216   5 weeks ago         133MB

    node              11.15.0   5b97b72da029   20 months ago       904MB

    1. 进入到容器中查看jdkmaven环境是否配置成功

    [root@docker ~]# docker run -it node:v9 /bin/bash

    查看Java版本

    root@a28cd2f5819c:/# java -version

    java version "1.8.0_191"

    Java(TM) SE Runtime Environment (build 1.8.0_191-b12)

    Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

    查看maven版本

    root@a28cd2f5819c:/# mvn -v

    Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)

    Maven home: /var/tmp/maven/apache-maven-3.6.3

    Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /var/tmp/jdk/jdk1.8.0_191/jre

    Default locale: en_US, platform encoding: ANSI_X3.4-1968

    OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

    6.查看容器中的profile配置文件

    root@0c7a6e7bbb04:/# cat /etc/profile

    # /etc/profile: system-wide .profile file for the Bourne shell (sh(1))

    # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

    if [ "`id -u`" -eq 0 ]; then

      PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

    else

      PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"

    fi

    export PATH

    if [ "${PS1-}" ]; then

      if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then

        # The file bash.bashrc already sets the default PS1.

        # PS1='h:w$ '

        if [ -f /etc/bash.bashrc ]; then

          . /etc/bash.bashrc

        fi

      else

        if [ "`id -u`" -eq 0 ]; then

          PS1='# '

        else

          PS1='$ '

        fi

      fi

    fi

    if [ -d /etc/profile.d ]; then

      for i in /etc/profile.d/*.sh; do

        if [ -r $i ]; then

          . $i

        fi

      done

      unset i

    fi

    export JAVA_HOME=/var/tmp/jdk1.8.0_191

    export JAVA_BIN=/var/tmp/jdk1.8.0_191/bin

    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    export MVN_HOME=/var/tmp/apache-maven-3.6.3

    export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

    export PATH=$PATH:$NGINX_HOME/sbin:$JAVA_HOME/bin:$MVN_HOME/bin

    Dockerfile中的内容已追加到配置文件

    7.环境配置成功退出容器

    root@a28cd2f5819c:/# exit

    或使用Ctrl+D快捷键

    易报错点:

    1. COPY指令格式

    COPY 本机目录 容器目录

    本机目录不能使用绝对路径,因为它本身就是一个相对路径,本机路径直接从当前目录开始,所以需要复制的文件放到当前目录

    ExpCOPY test/1 /home/1

    只会复制本机的1目录下所有文件,而不会创建1目录,所以后面需要指定

    1. 配置文件的路径要与Dockerfile中解压的指定路径相同,否则source重新加载配置文件后还是查不到版本信息

     

  • 相关阅读:
    cxf简单实例
    生成素描图片
    Robotlegs2 学习笔记 -- SwiftSuspenders 2.x (2)
    Robotlegs2 学习笔记 -- SwiftSuspenders 2.x (1)
    Spring boot的put请求 (如何实现RestFul Api风格)
    net start npf启用失败
    vue项目中:‘vue-cli-service' 不是内部或外部命令,也不是可运行的程序或批处理文件的报错
    SpringBoot + Mybatis 打印sql语句修改配置文件的方式
    vue-cli最新脚手架的安装
    SpringBoot项目中设置日期返回的格式
  • 原文地址:https://www.cnblogs.com/990114-jhc/p/14675571.html
Copyright © 2011-2022 走看看