美文网首页
Docker部署springboot项目

Docker部署springboot项目

作者: 努力耕耘少问收获 | 来源:发表于2019-03-12 14:49 被阅读0次

    #######1.Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
    #######2.安装:
    -2.1安装的前提:
    Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。使用命令 uname -r 查看当前操作系统内核,我当前系统内核版本是3.10.0-957.el7.x86_64。
    [root@localhost byp]# uname -r 3.10.0-957.el7.x86_64
    -2.2配置yum源
    由于安装centos后的默认yum源为centos的官方地址,所以在国内使用很慢甚至无法访问,所以一般的做法都是把默认的yum源替换成aliyun的yum源或者163等国内的yum源(下文介绍如何配置)。
    但是以上的方法都是需要网络的,当没有网络的时候就无法使用了,所以还有一个常用的方法就是用Centos的iso镜像搭建本地yum源,这样安装软件的速度就会飞快,缺点是可能有些包没有。
    我这里提供在线联网安装网易的和阿里的,二者选其一即可。

    1. 备份
    mv /etc/yum.repos.d/CentOs-Base.repo /etc/yum.repos.d/CentOs-Base.repo.bak
    2. 配置yum源
    网易云:wget -O /etc/yum.repos.d/CentOS-Base.repo [<u>http://mirrors.163.com/.help/CentOS7-Base-163.repo</u>](http://mirrors.163.com/.help/CentOS7-Base-163.repo)
    阿里云yum源:
    cd  /etc/yum.repos.d/
    wget  [<u>http://mirrors.aliyun.com/repo/Centos-7.repo</u>](http://mirrors.aliyun.com/repo/Centos-7.repo)
    mv Centos-7.repo CentOs-Base.repo
    3. 更新yum,生成缓存
    yum clean all
    yum makecache
    

    -2.3安装:

    a.安装yum 管理工具 
    # yum install -y yum-utils device-mapper-persistent-data lvm2 
    b.添加 docker yum 源 
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 
    c.安装docker-ce
    yum -y install docker-ce
    启动docker并设置为开启自启动
    systemctl start docker
    systemctl enable docker
    查看docker版本
    docker version
    

    #######3.拉取镜像:
    -3.1拉取mysql5.7镜像

    [root@localhost byp]# docker search mysql
    INDEX       NAME                                                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    docker.io   docker.io/mysql                                                  MySQL is a widely used, open-source relati...   7906      [OK]       
    docker.io   docker.io/mariadb                                                MariaDB is a community-developed fork of M...   2633      [OK]       
    docker.io   docker.io/mysql/mysql-server                                     Optimized MySQL Server Docker images. Crea...   595                  [OK]
    docker.io   docker.io/percona                                                Percona Server is a fork of the MySQL rela...   420       [OK]       
    docker.io   docker.io/zabbix/zabbix-server-mysql                             Zabbix Server with MySQL database support       173                  [OK]
    docker.io   docker.io/hypriot/rpi-mysql                                      RPi-compatible Docker Image with Mysql          110                  
    docker.io   docker.io/zabbix/zabbix-web-nginx-mysql                          Zabbix frontend based on Nginx web-server ...   91                   [OK]
    docker.io   docker.io/centurylink/mysql                                      Image containing mysql. Optimized to be li...   60                   [OK]
    docker.io   docker.io/1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5   ubuntu-16-nginx-php-phpmyadmin-mysql-5          49                   [OK]
    docker.io   docker.io/centos/mysql-57-centos7                                MySQL 5.7 SQL database server                   48                   
    docker.io   docker.io/mysql/mysql-cluster                                    Experimental MySQL Cluster Docker images. ...   41                   
    docker.io   docker.io/tutum/mysql                                            Base docker image to run a MySQL database ...   31                   
    docker.io   docker.io/bitnami/mysql                                          Bitnami MySQL Docker Image                      25                   [OK]
    docker.io   docker.io/schickling/mysql-backup-s3                             Backup MySQL to S3 (supports periodic back...   25                   [OK]
    docker.io   docker.io/zabbix/zabbix-web-apache-mysql                         Zabbix frontend based on Apache web-server...   24                   [OK]
    docker.io   docker.io/linuxserver/mysql                                      A Mysql container, brought to you by Linux...   20                   
    docker.io   docker.io/zabbix/zabbix-proxy-mysql                              Zabbix proxy with MySQL database support        20                   [OK]
    docker.io   docker.io/centos/mysql-56-centos7                                MySQL 5.6 SQL database server                   13                   
    docker.io   docker.io/circleci/mysql                                         MySQL is a widely used, open-source relati...   11                   
    docker.io   docker.io/mysql/mysql-router                                     MySQL Router provides transparent routing ...   8                    
    docker.io   docker.io/openshift/mysql-55-centos7                             DEPRECATED: A Centos7 based MySQL v5.5 ima...   6                    
    docker.io   docker.io/jelastic/mysql                                         An image of the MySQL database server main...   1                    
    docker.io   docker.io/ansibleplaybookbundle/mysql-apb                        An APB which deploys RHSCL MySQL                0                    [OK]
    docker.io   docker.io/cloudposse/mysql                                       Improved `mysql` service with support for ...   0                    [OK]
    docker.io   docker.io/widdpim/mysql-client                                   Dockerized MySQL Client (5.7) including Cu...   0                    [OK]
    [root@localhost byp]# 
    

    -3.2Docker拉取镜像到本地

    docker pull xxxx:tag
    

    -3.3 mysql5.7只需要。

    docker pull mysql:5.7
    

    -3.4拉取镜像后,我们执行docker images 就可以看到本地所有镜像信息

    [root@localhost byp]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    docker              latest              5621f7fea13f        25 hours ago        122 MB
    springboot          latest              5621f7fea13f        25 hours ago        122 MB
    docker.io/openjdk   8-jdk-alpine        e9ea51023687        4 days ago          105 MB
    docker.io/maven     latest              b171afb239f6        6 days ago          831 MB
    docker.io/mysql     5.7                 ee7cbd482336        7 days ago          372 MB
    [root@localhost byp]# 
    

    -3.5启动容器
    拉取镜像后,我们试着启动一下mysql

    docker run --name="dockermysql" -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    

    Docker run 启动容器 --name 指定容器名字 -p 这里是小写的p指定端口映射,第一个3306是宿主机的端口,第二个是容器的端口 -e 指定mysql用户名root密码是123456 -d 后台运行 后面mysql:5.7 镜像名:tag 也可以是imagesId 运行后,我们可以看到docker给我们container随机生成了一个容器id

    image.png

    -3.6启动MySQL
    docker ps 查看正在运行的容器,找到dockermysql对应的containerId docker exec -it 7a01680e7bca /bin/bash 进入容器 mysql -uroot -p 回车输入密码,可以看到我们已经成功安装了mysql

    image.png

    -3.7远程验证
    我们使用navicat远程连接一下mysql


    image.png

    #######4.Dockerfile

    FROM 
    格式为 FROM <image>或FROM <image>:<tag>。
    ENV 
    格式为 ENV <key> <value>。 指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持。
    
    MAINTAINER 
    格式为 MAINTAINER <name>,指定维护者信息。
    WORKDIR 
    格式为 WORKDIR /usr/local。
    为后续的 RUN、CMD、ENTRYPOINT 指令配置工作目录。
    RUN 
    格式为 RUN <command> 或 RUN ["executable", "param1", "param2"]。
    COPY 
    格式为 COPY <src> <dest>。
    复制本地主机的 <src>(为 Dockerfile 所在目录的相对路径)到容器中的 <dest>。当使用本地目录为源目录时,推荐使用 COPY。
    ADD 
    格式为 ADD <src> <dest>。
    该命令将复制指定的 <src> 到容器中的 <dest>。 其中 <src> 可以是Dockerfile所在目录的一个相对路径;也可以是一个 URL;还可以是一个 tar 文件(自动解压为目录)。
    EXPOSE 
    格式为EXPOSE PORT
    CMD 
    支持三种格式
        CMD ["executable","param1","param2"] 使用 exec 执行,推荐方式;
        CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;
        CMD ["param1","param2"] 提供给 ENTRYPOINT 的默认参数;
    ENTRYPOINT
    两种格式:
        ENTRYPOINT ["executable", "param1", "param2"]
        ENTRYPOINT command param1 param2(shell中执行)。
    

    注意:CMD有多个时候,CMD最后一个有效,其他被覆盖,ENTRYPOINT 则是以追加的形式。我们这里讲解的是常用命令,不常用的还有VOLUME,USER,ONBUILD...
    -4.1镜像构建
    docker build -t springboot

    [root@localhost byp]# docker build -t springboot .
    Sending build context to Docker daemon  18.4 MB
    Step 1/4 : FROM openjdk:8-jdk-alpine
     ---> e9ea51023687
    Step 2/4 : VOLUME /tmp
     ---> Using cache
     ---> d34a8e2f06b0
    Step 3/4 : ADD demo-0.0.1-SNAPSHOT.jar app.jar
     ---> Using cache
     ---> 18bf476992e2
    Step 4/4 : ENTRYPOINT java -jar /app.jar
     ---> Using cache
     ---> 5621f7fea13f
    Successfully built 5621f7fea13f
    

    -t tag简写 打标签+版本号 注意我后面有个点,代表当前路径。默认会去找当前的Dockerfile,如果你当前的不叫Dockerfile,你可以指定-f参数指定Dockerfile文件名。
    -4.2镜像制作完成后,我们启动镜像

    [root@localhost byp]# docker run --name="lalala" -d -p 9999:8080 springboot
    351105ab4e35d33560cdd4ff8ee5120dd00acdad79e3874b0c1c9addd5d73c63
    

    -4.3查看镜像

    [root@localhost byp]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    docker              latest              5621f7fea13f        25 hours ago        122 MB
    springboot          latest              5621f7fea13f        25 hours ago        122 MB
    docker.io/openjdk   8-jdk-alpine        e9ea51023687        4 days ago          105 MB
    docker.io/maven     latest              b171afb239f6        6 days ago          831 MB
    docker.io/mysql     5.7                 ee7cbd482336        7 days ago          372 MB
    
    image.png

    页面效果


    image.png

    相关文章

      网友评论

          本文标题:Docker部署springboot项目

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