博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker 安装以及部署springboot项目和连接mysql
阅读量:4166 次
发布时间:2019-05-26

本文共 5287 字,大约阅读时间需要 17 分钟。

文章目录

docker 安装以及部署springboot项目和连接mysql

一、安装docker

1.查看centos版本,Docker要求Centos系统的内核版本最低 3.10

# uname -r

2.若Centos的内核最低版本低于 3.10 的话需要执行更新操作,若Centos的最低版本高于 3.10就无需更新

# yum update

3.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖

# yum install -y yum-utils device-mapper-persistent-data lvm2

4.设置yum源

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

5.可以查看所有仓库中所有docker版本,并选择特定版本安装

# yum list docker-ce --showduplicates | sort -r

6.安装docker

# yum install docker-ce  #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版# 若要安装指定版本的docker   例: # yum install docker-ce-17.12.0.ce

7.安装完成docker后,启动docker

# systemctl start docker       启动docker# systemctl enable docker      设置开机启动docker

8.验证docker是否安装成功,若出现版本信息则说明成功安装了

# docker version

二、docker常用命令

1.重启docker服务# systemctl restart docker 2.停止docker命令# systemctl stop docker 3.查看镜像列表# docker images4.删除镜像# docker rmi image-id5.查看容器列表# docker ps# docker ps -a       查看所有容器,包括停止的容器6.启动以及停止容器# docker start container-name/container-id# docker stop container-name/container-id7.删除容器# docker rm container-id# docker rm -f container-id       强制删除容器8.查看容器日志# docker logs container-name/container-id9.设置 阿里云 加速地址找到 /etc/docker/ 目录下# vi daemon.json将以下内容复制到文件中{
"registry-mirrors": ["https://rypl6yvv.mirror.aliyuncs.com"]}# systemctl daemon-reload 通知systemd重载此配置文件# systemctl restart docker 重启docker10.查看最后一次运行的容器docker ps -l 11.查看停止的容器docker ps -f status=exited12.【外部】复制文件到【容器】中去:docker cp /外部目录/外部文件 容器名:/容器目录/文件名【若最后写了文件名,就以最后的文件名为主】 13.【容器】复制文件到【外部】:docker cp 容器名:/容器目录/容器中的文件 /外部目录/文件名【若最后写了文件名,就以最后的文件名为主】14.(目录挂载)文件映射:# docker run -di --name=mynginx -p 90:80 -v /usr/html:/usr/share/nginx/html nginx:1.17.5# -v 目录挂载 外部目录:容器目录 # -p 端口映射 外部端口:容器端口15.查看容器所有信息:docker inspect container-name16.Dockerfile语法说明 命令 作用FROM image_name:tag 定义了使用哪个基础镜像启动构建流程MAINTAINER user_name 声明镜像的创建者ENV key value 设置环境变量(可以写多条)RUN command 是Dockerfile的核心部分(可以写多条)ADD source_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压dest_dir/file COPY souce_dir/file 和ADD相似,但是如果有压输文件并不能解压 dest_dir/file WORKDIR path_dir 设置工作目录

三、在docker中安装MySQL

1.检索可安装的 mysql 镜像列表

# docker search mysql

查看镜像列表也可在官网查找 https://hub.docker.com/

2.选择合适的镜像后,拉取镜像(拉取镜像前,记住配置阿里云加速镜像地址,否则下载很慢)

# docker pull image-name:tag   例 # docker publl mysql:5.7   # tag 为镜像版本号# image-name 为镜像名

3.拉取下镜像后,查看镜像列表

# docker ps

4.运行容器

# docker run -p 3306:3306 --name mydata -e MYSQL_ROOT_PASSWORD=root -di --restart=always mysql:5.6.46docker run -p 主机端口:容器端口 --name 自定义容器名 -i  -t  -d  -v  主机目录:容器目录:ro  镜像ID或镜像名:TAG#--name 指定容器名,可自定义,不指定自动命名#-i以交互模式运行容器#-t分配一个伪终端,即命令行,通常-it组合来使用#-p指定映射端口,讲主机端口映射到容器内的端口#-d后台运行容器#-V指定挂载主机日录到容器日录,默认为rw读写模式,ro表示只读#-e MYSQL_ROOT_PASSWORD=root 设置MySQL默认密码# --restart=always  表示此容器开机启动,只要docker也设置了开机自启,docker不死

5.查看容器列表

# docker ps

6.在外部用Navicat连接docker中运行的数据库

四、将springboot项目打包

1.在idea中执行打包操作:

五、服务器上部署springboot项目

1.将打包好的项目 jar 包上传至服务器中,这里用到了 xftp 工具

这里将jar 上传到了   /usr/local/app/  的文件夹下

2.在上一步有jar的文件夹下 新建 Dockerfile 文件,名称一定固定为 Dockerfile

# vi Dockerfile    #将以下内容填写入 Dockerfile 文件中    #指定基础镜像,本地如果没有会从 dockerhub 上 pull 下来FROM openjdk:8#把可执行jar包复制到基础镜像的根目录下ADD learn.jar /mylearn.jar#容器需要暴露 给主机的端口号,这里的端口号和 项目配置文件中的端口号一致EXPOSE 8090#在镜像运行为容器后执行的命令ENTRYPOINT ["java","-jar","/mylearn.jar"]

说明:

第一步:FROM openjdk:8  为指定基础镜像第二步:第一个 learn.jar 为打包好后的springboot项目jar名称,mylearn.jar 为自定义的名称,将learn.jar复制到 mylearn.jar下面第三步:容器需要暴露 给主机的端口号,这里的端口号和 项目配置文件中的端口号一致第三步: 在镜像运行为容器后执行的命令 此次会被翻译为   java -jar /mylearn.jar

3.执行编译Dockerfile文件命令,构建镜像

# docker build -f Dockerfile -t mylearn:1 .# -f 指定编译的文件# -t 指定镜像名以及版本号# 注意命令最后还有一个 . 表示Dockerfile文件在当前文件下

4.执行命令基于刚才构建的镜像运行容器(即运行springboot项目,运行之前在外部用Navicat连接docker中运行的数据库,新建一个项目中需要连接的数据库)

运行方式一:当springboot项目连接数据的配置文件为:

spring.datasource.url = jdbc:mysql://localhost:3306/spring
#执行运行命令前,若springboot项目需要连接数据库,请确保数据库容器已经在运行# docker run --net=host --name=learn -p 8090:8090 -di mylearn:1#以 --net=host 方式启动的项目 端口号必须一致,因为docker会自动给每个容器分配ip,但是项目里配置的mysql地址是localhost,在容器内连接localhost是连接容器本身而不是宿主机的localhost,所以一直找不到mysql。所以采用host的网络方式将容器与宿主机共用一个Network Namespace,这样容器内localhost就是宿主机的localhost# -p 为端口号映射  8090 为外部访问端口,8090为容器对宿主机的映射端口# -d后台运行容器# -i以交互模式运行容器# --name自定义容器名称# 最后 mylearn 为我们上一步自定义构建的镜像名称

运行方式二:当springboot项目连接数据的配置文件为:

spring.datasource.url = jdbc:mysql://mysql:3306/spring即:有数据库别名的时候
# --link 连接提供mysql服务的容器,冒号后面是配置文件中数据库的别名,别名应该和代码中的数据库地址一致# docker run --link mydata:mysql --name=learn -p 80:8090 -di mylearn:1# --link 链接,mydata为已经在运行的数据库镜像的别名,冒号后面是配置文件中数据库的别名,这里配置文件中数据库的别名为mysql# --name 为容器的别名# -p 为端口号映射 80 为外部访问端口,8090为容器对宿主机的映射端口# -d后台运行容器# -i以交互模式运行容器# 镜像名:版本号

运行方式三:当springboot项目不需要连接数据库的时候

# docker run --name=learn -p 8090:8090 -di mylearn:1

注意:运行成功springboot容器后,不能访问项目的话,可能是端口号没有开启,检查防火墙状态

六、常用的centos对防火墙的操作指令

查看已经开放的端口# firewall-cmd --list-ports    开启端口# firewall-cmd --zone=public --add-port=80/tcp --permanent  # 加端口,格式为:端口/通讯协议    # –zone #作用域# –add-port=80/tcp #添加端口,格式为:端口/通讯协议# –permanent #永久生效,没有此参数重启后失效    重启firewall  # firewall-cmd --reload      停止firewall  # systemctl stop firewalld.service      禁止firewall开机启动  # systemctl disable firewalld.service       开机启动防火墙# systemctl enable firewalld    开启防火墙# systemctl start firewalld

转载地址:http://xqxxi.baihongyu.com/

你可能感兴趣的文章
C# 动态修改Config
查看>>
谈谈C#中的值类型和引用类型
查看>>
JBPM4之decision节点:2、好学生|坏学生|超级学生
查看>>
bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
查看>>
[网络] C# NetHelper网络通信编程类教程与源码下载
查看>>
文件操作
查看>>
支付宝,微信,百度钱包关闭支付页面的方式
查看>>
将二进制流转换成图片文件
查看>>
写规范代码的意义------去除魔法数字
查看>>
the advantages of small laser engraving machine
查看>>
怎么知道视频是横着录像的, 还是竖着录像的。
查看>>
C++代码重用——包含
查看>>
IDEA 社区版 点击‘Edit Configurations’打开“Run/Debug Configurations”,里面没有tomcat server选项...
查看>>
终于明白人生最重要的是什么,人生的意义
查看>>
浏览器的工作原理:新式网络浏览器幕后揭秘
查看>>
weka中的options
查看>>
CMS垃圾收集器深入详解
查看>>
People Tools catalog tables.
查看>>
第一个shell脚本
查看>>
收到一个Offer
查看>>