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
文章图片
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 或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
文章图片
image.png 页面效果
文章图片
image.png
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- Activiti(一)SpringBoot2集成Activiti6
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- Beego打包部署到Linux
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- springboot使用redis缓存
- Spring|Spring Boot部署到Resin遇到的问题
- docker镜像探索----dive工具
- springboot整合数据库连接池-->druid