Windows10 Docker学习部署SpringBoot项目

Docker安装

docker安装很简单,国内好像上不去官网,下载不了,本人已经下载最新版,分享出来:

链接: https://pan.baidu.com/s/1O480Ysm04GGeu2GrKkgryA 提取码: dfk8 

安装参考
docker windows安装
安装完之后,记得修改一下国内镜像地址
Docker镜像加速

拉取mysql镜像

1.使用docker search mysql 命令查看mysql有哪些镜像
在这里插入图片描述
然后我选择了centos/mysql-57-contos7
2.使用docker pull centos/mysql-57-centos7命令拉取mysql镜像
拉取完之后,使用命令docker images查看是否已经mysql有的镜像了
在这里插入图片描述

创建运行mysql容器

使用命令

docker run -itd --name mysql57 -p 9000:3306 -e MYSQL_ROOT_PASSWORD=123456 f83a2938370c

最后那个f83a2938370c是mysql镜像的image_id,由于我本地已经安装了mysql,所以,我用本地9000端口去映射镜像中的3306端口。
然后再用命令docker ps -a查看已经运行的docker
在这里插入图片描述
到此,我们的mysql5.7的docker镜像已经创建完毕,我们可以从本机尝试连接这个mysql。我用的navicat.
在这里插入图片描述

准备springBoot项目

我在这里创建了个demo,一个简单的查询数据库,然后打jar包,同时根据网上给的示例,创建了一个Dockerfile文件。
哦,对了,这里需要强调一个点,就是springBoot项目连接数据库的IP该怎么写。
由于docker中的镜像都是互相独立的,互不通信,所以每个运行的容器都有一独立IP。我们的SpringBoot项目要使用mysql镜像的数据库,那么必须得知道mysql镜像运行的容器的IP。
1.用docker ps -a 查看一下正在运行的容器ID,然后使用命令

docker inspect 容器ID

查看容器的IP地址
在这里插入图片描述
往下拉:
在这里插入图片描述
我们已经看到mysql容器的IP了,所以,我们的SpringBoot项目的mysql地址就必须写这个才行

spring.datasource.url=jdbc:mysql://172.17.0.2:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC

然后打包成jar。

创建Dockerfile文件

我们将我们的springboot项目打成一个镜像前,必须要有个Dockerfile文件,文件名就是Dockerfile,没有后缀
具体内容如下(从网上搜来的)

Dockerfile 示例内容:
# 基础镜像使用Java
FROM java:8
# 作者
MAINTAINER mayucai 
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD demo-0.0.1-SNAPSHOT.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

创建完毕后,将打好的jar包和Dockerfile文件放在同一个目录下,启动Power Shell或者CMD都行,进入这个目录,执行命令:

docker image build -t springbootdemo4docker . 

第一次执行的话,docker会拉取java8 ,所以会稍微慢点,下次就快很多了。
执行完毕之后,再用docker images查看,就会发现已经有自己springboot项目的镜像了;
使用命令docker run -d -p 8080:8080 springbootdemo4docker 启动一个容器
启动好之后,在浏览器访问:
在这里插入图片描述

扫描二维码关注公众号,回复: 10809609 查看本文章

总结

学习docker前面都很顺利,就是打包部署自己的springboot项目之后,一直访问不到数据库,刚开始想让项目直接访问自己本地数据库,奈何访问不了,很多人说启动镜像的时候,加个参数–net=host,然并卵,同时大家都说,docker设计的初衷不是这样的,就是不建议访问宿主机的内容。所以就弄了个mysql的镜像,让SpringBoot直接访问镜像数据库。

参考链接

Docker部署SpringBoot项目
docker内springboot项目连接mysql
Windows Docker 安装

记录一下今天自己用的docker命令

-- 搜索镜像
docker search mysql
-- 拉取镜像
docker pull mysql:5.7
--查看已经安装的镜像
docker images
--查看正在运行的容器
docker ps -a
--查看容器详情
docker inspect mysql
--执行镜像构建命令
docker image build -t demo-pmsd .
-- 停止容器
docker stop 容器ID 
-- 安装centos后,进入该centos的命令,进入后,就可以执行命令了
docker exec -it centos /bin/bash

【PS】win10 Power shell 挺好用,支持ls、clear等命令了

发布了33 篇原创文章 · 获赞 24 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/Myc_CSDN/article/details/104021428