Docker部署springboot项目

#######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 [http://mirrors.163.com/.help/CentOS7-Base-163.repo](http://mirrors.163.com/.help/CentOS7-Base-163.repo)
阿里云yum源:
cd  /etc/yum.repos.d/
wget  [http://mirrors.aliyun.com/repo/Centos-7.repo](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

Docker部署springboot项目_第1张图片
image.png

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


Docker部署springboot项目_第2张图片
image.png

#######4.Dockerfile

FROM 
格式为 FROM 或FROM :。
ENV 
格式为 ENV  。 指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持。

MAINTAINER 
格式为 MAINTAINER ,指定维护者信息。
WORKDIR 
格式为 WORKDIR /usr/local。
为后续的 RUN、CMD、ENTRYPOINT 指令配置工作目录。
RUN 
格式为 RUN  或 RUN ["executable", "param1", "param2"]。
COPY 
格式为 COPY  。
复制本地主机的 (为 Dockerfile 所在目录的相对路径)到容器中的 。当使用本地目录为源目录时,推荐使用 COPY。
ADD 
格式为 ADD  。
该命令将复制指定的  到容器中的 。 其中  可以是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
Docker部署springboot项目_第3张图片
image.png

页面效果


Docker部署springboot项目_第4张图片
image.png

你可能感兴趣的:(Docker部署springboot项目)