docker springboot mysql整合

本文详细介绍了如何在Docker环境下整合SpringBoot应用与MySQL数据库,包括Dockerfile编写、数据容器的创建与使用,以及Docker中MySQL的配置与远程连接设置。通过示例展示了如何构建和运行Web应用,以及实现主机与容器间的数据共享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. Docker相关

安装docker

yum -y install docker(centos下)

运行docker服务

service docker start或者/bin/systemctl start docker.service

  1. Idea新建web项目编写测试controller,打包成jar包,测试可运行访问并输出内容;
  2. 编写Dockerfile

FROM java:8

EXPOSE 86

VOLUME /tmp

ADD docker_demo-0.0.1-SNAPSHOT.jar docker_demo.jar

RUN bash -c 'touch /docker_demo.jar'

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/docker_demo.jar"]

 

将jar包和Dockerfile放在一个目录下,运行docker build -t docker_demo .(注意这个点,表示dockfile在当前目录下,docker_demo是镜像名称)构建对象

参数说明

VOLUME 宿主本地创建数据卷映射到容器的tmp目录

ENTRYPOINT 容器运行后运行的命令

 

运行镜像:docker run -d -p 86:86 docker_demo

-d 守护进程,后台运行(不加这个参数只要ctrl+c 命令行中断 容器就停止运行)

-p 映射本地86到容器内86

docker_demo 镜像名称

-v 本地:容器 挂载本地目录到容器目录 文件互通

 

查看运行结果:docker logs 4c6df2e967e7113a5baac238eafa721415277d319cee8071d3bc072363c43034(容器id) -f参数可以追加日志

 

curl进行测试接口 项目是否运行成功

其它命令:

查看所有本地所有镜像: docker images

查看运行中的容器 : docker ps

查看所有运行过的容器 : docker ps -a

启动运行过的容器:docker start 容器id

停止运行中的容器:docker stop 容器id

删除镜像docker rmi 镜像id

删除容器docker rm 容器id

查看容器或者镜像的具体信息:docker inspect id

进入运行中的容器内部:docker exec -it e6648828737e /bin/bash

说明:一个镜像相当于一个静态的脚本,run起来就是动态的容器实例,run多次就是多个不同的实例,实例之间隔离,实例可以根据需求随意增删,容器内的操作不会影响镜像;

Volume说明

docker run .... -v /data 创建一个Volume,其实是在host machine上创建一个directory

docker volume create --name ** 创建一个Volume,其实是在host machine上创建一个directory

docker volume ls 列出所有volume

docker volume inspect [volume name] 即可获取这个volume在主机的位置

Volume可以在容器之间以及容器和主机之间共享和重用

·  Volume在某一挂载的位置被修改,所以使用该volume的地方都会同时更新

·  Volume的大小不会被加到容器本身上

·  Volume会一直存在,直到没有任何容器使用它,才能使用命令docker volume rm [volumes名字]删除

 

主机和容器之间的数据共享

  • docker run -v /home/adrian/data:/data [image]
    -v A:B A是在主机上的地址,B是在容器中的地址,一旦容器运行,AB的会完全同步。

容器和容器之间的数据共享

使用--volumes-from, docker run -it -h NEWCONTAINER --volumes-from container-test debian /bin/bash 意思是,将container-test这个container中的volume挂载到当前将要运行起来的容器中。前提是container-test中的volumes必须被创建过,但是container-test可以是被stop的,原因是volume只能被手动删除,不是随着容器停止而被删除

数据容器

准备一个容器专门用来做数据容器,比如docker run -d -v /dbdata --name dbdata postgres echo Data-only container for postgres运行postgres这个容器然后给他配置一个volume,其他容器都可以--volumes-from到这个volume,数据容器可以不在运行状态甚至可以被删除,只要volume创建了即可。

 

 

Docker集成mysql

docker volume create mysql_data 本地创建个卷

docker run --name mysql -v mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:5.7 关联卷到容器/var/lib/mysql

 

docker exec -it ed9e90ded02c /bin/bash进入容器

mysql -u root -p输入密码root

允许远程连接 GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'yourpassword';

 

dockerfile

FROM java:8

EXPOSE 88

VOLUME /logs(默认内置tomcat的日志生成在jar包同路径下的logs文件夹下,随机到宿主机/var/lib/docker/volumes

ADD hsjc-0.0.1-SNAPSHOT.jar hsjc.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/hsjc.jar"]

 

运行web连接mysql容器 docker run --name hsjc-web(容器名称) -d -p 88:88 --link mysql(mysql容器名称):mysql(别名) -v /usr/docker/logs:/logs hsjc-web(镜像名称)

 

宿主机与容器文件拷贝 docker cp 宿主机文件地址 容器id:/opt/ (反过来亦可以)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值