完整的docker+springboot+mysql部署 | 您所在的位置:网站首页 › springboot打包docker镜像 › 完整的docker+springboot+mysql部署 |
docker+springboot+mysql部署
网上文章多如牛毛,但在参照做时,多少遇到坑,故记一次完整的于此!我使用的是centos7。 1、准备阶段 a)安装dockerb)安装mysqlc)springboot打包与Dockerfile2、开始部署 a)jar、Dockerfile文件b)运行mysql并连接navicatc)运行项目 安装docker下载docker [root@localhost ~]# sudo yum install docker-ce 启动docker [root@localhost ~]# sudo systemctl start docker 设置开机启动 [root@localhost ~]# sudo systemctl enable docker 验证版本 [root@localhost ~]# docker -v 安装mysql前先设置镜像地址,我使用的是阿里云镜像地址,可以加速下载 接下来执行安装MySQL,版本可以自己找,不一定要5.7 [root@localhost ~]# docker pull mysql:5.7 如上MySQL就安装好了。 springboot打包与Dockerfilespringboot使用maven将程序打成jar包,接着编写Dokerfile文件 Dockerfile文件内容 FROM java:8 VOLUME /tmp ADD eriz-1.0.0.jar /app.jar RUN sh -c 'touch /app.jar' ENV JAVA_OPTS="" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]解释: java:8是指Docker Hub上官方提供的java镜像,版本号是8也就是jdk1.8,有了这个基础镜像后,Dockerfile可以通过FROM指令直接获取它的状态,也就是在容器中java是已经安装的,接下来通过自定义的命令来运行Spring Boot应用。 VOLUME指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。效果就是在主机的/var/lib/docker目录下创建了一个临时文件,并连接到容器的/tmp。 add将项目的jar文件作为app.jar添加到容器 RUN表示在新创建的镜像中执行一些命令,然后把执行的结果提交到当前镜像。这里使用touch命令来改变文件的修改时间,Docker创建的所有容器文件默认状态都是“未修改”。这对于简单应用来说不需要,不过对于一些静态内容(比如:index.html)的文件就需要一个“修改时间”。 ENTRYPOINT 应用启动命令 参数设定。 jar、Dockerfile文件然后将打好的jar包与Dockerfile放到linux下同个目录下。 运行命令制作镜像: docker build -t [容器名] . 注意:后面有个点,表示当前目录下 第一次制作会慢一点,需要下载jdk等 如上镜像就已制作好了。 运行mysql并连接navicat运行MySQL并连接到navicat管理工具 先运行命令:docker volume create mysql_data 创建数据挂载点(即存储数据的地方,这样即便mysql容器删除了,数据还是在) 执行命令:docker run --name mysql -p 3306:3306 -v mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7运行mysql容器 并使用docker ps可查看运行中的容器。 解释: --name 镜像名称 -p映射端口 -v /mysql/datadir:/var/lib/mysql 设置本地挂载点 -e MYSQL_ROOT_PASSWORD=123456 设置密码 -d mysql 容器名称 docker exec -it mysql bash 进入容器 /bin/bash 并执行mysql -uroot -p123456 进入mysql mysql授权:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; 刷新:FLUSH PRIVILEGES; 接下来使用navicat连接docker容器中的mysql 密码就是上面设置的密码,然后就可以通过这个管理工具将你的程序所需要的数据准备好了。 运行项目到这步了,运行springboot程序就可以了。 docker run -it --net=host --name erizboot -p 8181:8181 erizboot --net=host 告诉 Docker 不要将容器网络放到隔离的名字空间中,即不要容器化容器内的网络。此时容器使用本地主机的网络,它拥有完全的本地主机接口访问权限。容器进程可以跟主机其 它 root 进程一样可以打开低范围的端口,可以访问本地网络服务比如 D-bus,还可以让容器做一些影响整个主机系统的事情,比如重启主机。因此使用这个选项的时候要非常小心。如果进一步的使用 --privileged=true,容器会被允许直接配置主机的网络堆栈。 这个非常重要,好多博客运行方式都不一样,且运行不起来,这个可以!!! 可以运行命令:docker ps 查看正在运行中的容器 好了,到这里就完成了docker+springboot+mysql的部署了。看一下项目运行界面 |
CopyRight 2018-2019 实验室设备网 版权所有 |