美文网首页
Dockerfile

Dockerfile

作者: saoraozhe3hao | 来源:发表于2019-07-24 14:53 被阅读0次

    案例:Nginx Dockerfile

    FROM nginx
    ADD ./web /usr/share/nginx/html   # 需要准备前端的构建产物,放入web目录
    COPY ./default.conf /etc/nginx/conf.d/  # 需要准备好 nginx的配置文件
    EXPOSE 80
    ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]
    

    案例:Java Dockerfile

    FROM centos
    RUN yum install -y java-1.8.0-openjdk
    COPY ./app.jar /root/   # 需要准备好 java的构建产物jar文件
    EXPOSE 80
    

    案例:mysql Dockerfile

    FROM mysql
    # /root 下放一个 .my.cnf,里面记录用户名密码 即可 免密登录mysql,才能用脚本操作数据库
    COPY ./.my.cnf /root/
    # 拷贝目录,相当于把源目录下的文件 拷贝 容器内一个同名新目录
    COPY ./sql /root/sql/
    

    案例:一键部署 nginx、java、mysql

    1、构建并导出镜像

    #! /bin/bash
    set -e
    # 安装并启动docker
    yum install docker
    service docker start
    # 清除上次打的镜像
    set +e
    docker stop mysql java web
    docker rm mysql java web
    docker rmi mysql java web
    # 用Dockerfile构建镜像 
    set -e
    docker build -t mysql -f ./mysql.dockerfile .
    docker build -t java -f ./java.dockerfile .
    docker build -t web -f ./web.dockerfile .
    # 导出镜像
    docker save -o ./deploy/mysql.tar mysql
    docker save -o ./deploy/java.tar java
    docker save -o ./deploy/web.tar web
    

    2、使用镜像

    #! /bin/bash
    set -e
    # 安装并启动docker
    yum install docker
    service docker start
    # 清除
    set +e
    docker stop mysql java web
    docker rm mysql java web
    docker rmi mysql java web
    # 载入镜像文件
    set -e
    docker load < contract-guard-mysql.tar
    docker load < contract-guard-java.tar
    docker load < contract-guard-web.tar
    # 创建容器
    set -e
    docker run --name mysql -e MYSQL_ROOT_PASSWORD=*** -d mysql
    docker run --name java -tdi java
    docker run --name web -tdi -p 80:80 web
    sleep 30  # 等待30秒,确保mysql启动完成,才能正常连接
    # 配置网络
    set +e
    docker network rm my-bridge
    set -e
    docker network create -d bridge my-bridge
    docker network connect --alias mysql my-bridge mysql
    docker network connect --alias java my-bridge java
    docker network connect --alias web my-bridge web
    # 启动程序
    docker exec mysql /bin/bash /root/sql/init.sh  # 初始化数据库
    sleep 30  # 等待30秒,数据库初始化完成
    docker exec -d java java -jar /root/app.jar --spring.profiles.active=docker
    docker start web
    

    mysql初始化shell脚本 init.sh

    #! /bin/bash
    set -e
    mysql < /root/sql/init.sql
    mysql db1 < /root/sql/tables.sql
    

    mysql初始化sql脚本 init.sql

    create database db1;
    

    相关文章

      网友评论

          本文标题:Dockerfile

          本文链接:https://www.haomeiwen.com/subject/vyqxrctx.html