• 第二课:Dockerfile


    1.Dockerfile格式

    Dockerfile 中的指令是不区分大小写的。然而,习惯上要将它大写,以便更容易地与参数区分开来。

    Docker按照Dockerfile 中指令的顺序从上到下逐一执行。一般来说,Dockerfile 必须以指定用于构建过程的基础镜像的 FROM 指令开始,而 ARG 指令是唯一可以在 FROM 指令之前使用的指令,FROM 指令之前可以有一条或多条 ARG 指令,用于声明 Dockerfile 中的 FROM 指令中可以使用的参数。

    Docker将以 # 开始的行作为注释,除非该行是有效的解析器指令。一行中任何其他地方的 # 标记都将被视为参数。

    2.Dockerfile指令

    指令 描述
    FROM 构建新镜像是基于哪个镜像
    MAINTAINER 镜像维护者姓名或邮箱地址
    RUN 构建镜像时运行的shell命令
    COPY 拷贝文件或目录到镜像中
    ENV 设置环境变量
    USER 为RUN,CMD和ENTRYPOINT执行命令指定运行用户
    EXPOSE 申明容器运行的服务端口
    HEALTHCHECK 容器中服务健康检查
    WORKDIR 为RUN,CMD,ENTRYPOINT,COPY和ADD设置工作目录
    ENTRYPOINT 运行容器时执行,如果有多个ENTRYPOINT命令,最后一个生效
    CMD 运行容器时执行,如果有多个CMD命令,最后一个生效

    3.Build镜像

    docker build [OPTIONS] PATH | URL | -
    options:
    -t,--tag list #镜像名称
    -f,--file string #指定dockerfile文件位置

    4.构建业务基础镜像

    4.1构建nginx基础镜像

    构建方法
    1.yum或者源码编译安装(1.configure 2.make 3.make install)RUN
    2.启用哪些模块 RUN
    3.nginx初始化 RUN
    4.启动 CMD

    创建Dockerfile
    Dockerfile-nginx

    FROM centos:7
    MAINTAINER yogi1982@163.com
    RUN yum install -y gcc gcc-c++ make 
        openssl-devel pcre-devel gd-devel 
        iproute net-tools telnet wget curl && 
        yum clean all && 
        rm -rf /var/cache//yum/*
    RUN wget http://nginx.org/download/nginx-1.16.1.tar.gz && 
        tar zxf nginx-1.16.1.tar.gz && 
        cd nginx-1.16.1 && 
        ./configure --prefix=/usr/local/nginx 
        --with-http_ssl_module 
        --with-http_stub_status_module && 
        make -j 4 && make install && 
        echo "ok" >> /usr/local/nginx/html/status.html && 
        cd / && rm -rf nginx-1.16.1* && 
        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    ENV PATH $PATH:/usr/local/nginx/sbin
    #COPY nginx.conf /usr/local/nginx/conf/nginx.conf
    WORKDIR /usr/local/nginx
    EXPOSE 80
    CMD ["nginx","-g","daemon off;"]
    

    构建镜像
    使用配置好的dockerfile构建镜像

    docker build -t nginx:v1 -f Dockerfile-nginx .
    

    构建更新项目

    touch index.html
    echo "nginx:v2" > index.html
    
    #Dockerfile-nginx-v2
    FROM nginx:v1
    COPY index.html /usr/local/nginx/html
    

    构建v2镜像

    docker build -t nginx:v2 -f Dockerfile-nginx-v2 .
    

    4.2构建php基础镜像

    构建Dockerfile

    FROM centos:7
    MAINTAINER yogi1982@163.com
    ENV VERSION=7.3.13
    
    RUN yum install epel-release -y && 
        yum install -y gcc gcc-c++ make gd-devel libxml2-devel 
        libcurl-devel libjpeg-devel libpng-devel openssl-devel 
        libmcrypt-devel libxslt-devel libtidy-devel autoconf 
        iproute net-tools telnet wget curl openssh-clients && 
        yum clean all && 
        rm -rf /var/cache/yum/*
    
    #RUN wget http://docs.php.net/distributions/php-7.3.7.tar.gz && 
    RUN wget http://192.168.1.88/downloads/php-${VERSION}.tar.gz && 
        tar zxf php-${VERSION}.tar.gz && 
        cd php-${VERSION} && 
        ./configure --prefix=/usr/local/php 
        --with-config-file-path=/usr/local/php/etc 
        --enable-fpm --enable-opcache 
        --with-mysqli --with-pdo-mysql 
        --with-openssl --with-zlib --with-curl --with-gd 
        --with-jpeg-dir --with-png-dir --with-freetype-dir 
        --enable-mbstring --enable-hash && 
        make -j 4 && make install && 
        cp php.ini-production /usr/local/php/etc/php.ini && 
        cp sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf && 
        sed -i "90a deamonize = no" /usr/local/php/etc/php-fpm.conf && 
        mkdir /usr/local/php/log && 
        cd /usr/local/php/etc/php-fpm.d && 
        cp www.conf.default www.conf && 
        cd / && rm -rf php* && 
        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    ENV PATH $PATH:/usr/local/php/sbin
    COPY php.ini /usr/local/php/etc/
    COPY php-fpm.conf /usr/local/php/etc
    WORKDIR /usr/local/php
    EXPOSE 9000
    CMD ["php-fpm"]
    

    构建tomcat基础镜像
    构建Dockerfile

    FROM centos:7
    MAINTAINER yogi1982@163.com
    
    ENV VERSION=8.5.50
    
    RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && 
        yum clean all && 
        rm -rf /var/cache/yum/*
    
    RUN wget http://192.168.1.88/downloads/apache-tomcat-${VERSION}.tar.gz && 
        tar zxf apache-tomcat-${VERSION}.tar.gz && 
        mv apache-tomcat-${VERSION} /usr/local/tomcat && 
        rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* && 
        mkdir /usr/local/tomcat/webapps/test && 
        echo "ok" > /usr/local/tomcat/webapps/test/status.html && 
        sed  -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh && 
        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    ENV PATH $PATH:/usr/local/tomcat/bin
    
    WORKDIR /usr/local/tomcat
    
    EXPOSE 8080
    CMD ["catalina.sh", "run"]
    

    以Jenkins为例,构建项目
    Dockerfile-tomcat-v2

    FROM tomcat:v1
    COPY jenkins.war /usr/local/tomcat/webapps/ROOT.war
    
  • 相关阅读:
    vue插件大全
    提高webpack的构建速度的几种方法概括
    当async/await碰见forEach-------------爆炸
    jquery 源码解析 节点遍历
    jquery工具类函数
    jqueryUI 插件
    Jquery常用插件
    jquery 基础-Ajax应用
    JavaScipt 源码解析 Sizzle选择器
    JavaScipt 源码解析 css选择器
  • 原文地址:https://www.cnblogs.com/Doc-Yu/p/12095454.html
Copyright © 2020-2023  润新知