Docker下部署SpringBoot与Mysql

Docker的应用场景

常用的8个Docker的真实使用场景,分别是简化配置、代码流水线管理、提高开发效率、隔离应用、整合服务器、调试能力、多租户环境、快速部署。

Docker的安装与启动

注:系统为macOS
MAC下Docker Desktop下载地址

  1. 下载完成后,进行安装。
    终端输入docker –version查看docker版本
>docker verison
>Docker version 19.03.2, build 6a30dfc
  1. 查看docker下的镜像,使用docker images命令
    在这里插入图片描述
  2. 查询docker下所有容器,使用docker container ls --all
    在这里插入图片描述
  3. 启动docker下面的hello-world镜像
    Docker下部署SpringBoot与Mysql_第1张图片

SpringBoot部署

  1. 编写Dockerfile
    使用touch命令创建Dockerfile文件,并使用vim加入如下内容
FROM java:8
VOLUME /tmp
ADD gsg-1.0.1.jar app.jar
RUN bash -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar"]
  1. 创建镜像
    前提:进入Dockerfile文件夹
    命令:docker build -t [tag] .
    -t:镜像的名字与标签
    . : 表示在当前文件夹的Dockerfile创建镜像
    tips:使用docker images 查看创建的镜像
  2. 运行镜像
    命令:docker run --name [container-name] -d -p [host-port]:[container-port] [image-name]
    container-name:容器别名
    image-name:镜像名称
    -d:后台运行
    -p:[host-port]:[container-port]
    tips:端口映射指的是容器端口映射到宿主机端口。
    举个栗子:
    docker run --name hello-world -d -p 8081:8080 docker-hello
    说明:容器名为hello-world,镜像名为docker-hello,端口映射为8081:8080即在主机上通过localhost:8081或者127.0.0.1:8081访问到容器的8080端口

MySql部署(以5.7版本为例)

  1. 查看docker仓库中的mysql
    命令:docker search mysql
  2. 拉取mysql镜像到本地系统
    命令:docker pull mysql:[version]
  3. 启动mysql镜像
    命令:
    docker run --name mysql5.7 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    命令说明:
    -p 3306:3306:将容器的3306端口映射到宿主机的3307端口
    -e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码

tips:如果在项目中使用mysql数据库,且在docker中进行了mysql数据库的配置启动,需要修改项目的数据库连接配置。

如何修改?
  1. 使用docker inspect CONTAINER_ID 查询mysql容器Ip
    命令:docker inspect mysql
    Docker下部署SpringBoot与Mysql_第2张图片
  2. 将项目中的数据库连接的localhost更改为上图的IPAddress

原因分析: 在Docker上为容器分配的ip一般不会是127.0.0.1,所以使用localhost无法映射到容器的ip地址。

至此, 在Docker中部署springboot与mysql实现完成。接下来即可在主机中使用localhost:8081访问springboot项目。同时也可以使用数据库可视化工具对mysql进行访问,只需要将url的地址修改为localhost:3307。


Docker常用命令

FROM命令

目的:指定基础镜像
特点:需要写在其他指令之前,之后的指令都依赖于该指令指定的镜像。

语法:
FROM [image]
FROM [image>]:
FROM [image]@

示例:FROM java:8

ADD命令

目的:复制文件

语法:ADD [src] [dest]
从src复制文件到容器的dest。src可以是Dockerfile所在目录的相对路径。

示例:
ADD spring-boot-docker.jar app.jar
(拷贝文件并且重命名)

VOLUME命令

目的:
1.加载本地目录下的配置文件到容器目标地址下
2.使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可共享其他容器。

语法:
VOLUME ["<路径1>","<路径2>"…]
VOLUME <路径>

示例:
VOLUME /tmp

VOLUME 指向了一个 /tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的 /var/lib/docker目录下创建一个临时文件并把它链接到容器中的 /tmp目录

docker exec命令

docker exec -it CONTAINER_ID bash
进入容器终端并且的保留为容器终端的输入形式.

docker inspect命令

docker inspect CONTAINER_ID
查询某个容器的ip

你可能感兴趣的:(学习要点总结,#,Docker)