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

【Docker部署springboot项目】-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 INDEXNAMEDESCRIPTIONSTARSOFFICIALAUTOMATED docker.iodocker.io/mysqlMySQL is a widely used, open-source relati...7906[OK] docker.iodocker.io/mariadbMariaDB is a community-developed fork of M...2633[OK] docker.iodocker.io/mysql/mysql-serverOptimized MySQL Server Docker images. Crea...595[OK] docker.iodocker.io/perconaPercona Server is a fork of the MySQL rela...420[OK] docker.iodocker.io/zabbix/zabbix-server-mysqlZabbix Server with MySQL database support173[OK] docker.iodocker.io/hypriot/rpi-mysqlRPi-compatible Docker Image with Mysql110 docker.iodocker.io/zabbix/zabbix-web-nginx-mysqlZabbix frontend based on Nginx web-server ...91[OK] docker.iodocker.io/centurylink/mysqlImage containing mysql. Optimized to be li...60[OK] docker.iodocker.io/1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5ubuntu-16-nginx-php-phpmyadmin-mysql-549[OK] docker.iodocker.io/centos/mysql-57-centos7MySQL 5.7 SQL database server48 docker.iodocker.io/mysql/mysql-clusterExperimental MySQL Cluster Docker images. ...41 docker.iodocker.io/tutum/mysqlBase docker image to run a MySQL database ...31 docker.iodocker.io/bitnami/mysqlBitnami MySQL Docker Image25[OK] docker.iodocker.io/schickling/mysql-backup-s3Backup MySQL to S3 (supports periodic back...25[OK] docker.iodocker.io/zabbix/zabbix-web-apache-mysqlZabbix frontend based on Apache web-server...24[OK] docker.iodocker.io/linuxserver/mysqlA Mysql container, brought to you by Linux...20 docker.iodocker.io/zabbix/zabbix-proxy-mysqlZabbix proxy with MySQL database support20[OK] docker.iodocker.io/centos/mysql-56-centos7MySQL 5.6 SQL database server13 docker.iodocker.io/circleci/mysqlMySQL is a widely used, open-source relati...11 docker.iodocker.io/mysql/mysql-routerMySQL Router provides transparent routing ...8 docker.iodocker.io/openshift/mysql-55-centos7DEPRECATED: A Centos7 based MySQL v5.5 ima...6 docker.iodocker.io/jelastic/mysqlAn image of the MySQL database server main...1 docker.iodocker.io/ansibleplaybookbundle/mysql-apbAn APB which deploys RHSCL MySQL0[OK] docker.iodocker.io/cloudposse/mysqlImproved `mysql` service with support for ...0[OK] docker.iodocker.io/widdpim/mysql-clientDockerized 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 REPOSITORYTAGIMAGE IDCREATEDSIZE dockerlatest5621f7fea13f25 hours ago122 MB springbootlatest5621f7fea13f25 hours ago122 MB docker.io/openjdk8-jdk-alpinee9ea510236874 days ago105 MB docker.io/mavenlatestb171afb239f66 days ago831 MB docker.io/mysql5.7ee7cbd4823367 days ago372 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

Docker部署springboot项目
文章图片
image.png
-3.6启动MySQL
docker ps 查看正在运行的容器,找到dockermysql对应的containerId docker exec -it 7a01680e7bca /bin/bash 进入容器 mysql -uroot -p 回车输入密码,可以看到我们已经成功安装了mysql

Docker部署springboot项目
文章图片
image.png
-3.7远程验证
我们使用navicat远程连接一下mysql

Docker部署springboot项目
文章图片
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 daemon18.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 REPOSITORYTAGIMAGE IDCREATEDSIZE dockerlatest5621f7fea13f25 hours ago122 MB springbootlatest5621f7fea13f25 hours ago122 MB docker.io/openjdk8-jdk-alpinee9ea510236874 days ago105 MB docker.io/mavenlatestb171afb239f66 days ago831 MB docker.io/mysql5.7ee7cbd4823367 days ago372 MB

Docker部署springboot项目
文章图片
image.png 页面效果

Docker部署springboot项目
文章图片
image.png

    推荐阅读