docker部署mysql项目_docker部署springboot项目(web + mysql)

本文详细介绍了如何在Docker环境下部署SpringBoot Web项目和MySQL数据库。首先,修改SpringBoot项目的数据库URL,使用mysql容器名称。接着,打包项目为war文件并创建Dockerfile。然后,构建Docker镜像,编写docker-compose.yml文件,定义visualizer、mysql和web服务。最后,执行docker命令启动服务,并提供了解决启动问题的方法和常用Docker命令。
摘要由CSDN通过智能技术生成

前言

docker目前是非常热门的项目,本文暂不讨论docker集群环境中的部署项目问题。

环境准备

1. docker环境(本文使用centos7下的docker环境)

2. javaWeb项目(springboot Web项目)

实战动手

1. 将springboot项目打包成war包,并且编写 Dockerfile 文档

前提: 将springboot项目中

spring.datasource.url = jdbc:mysql://localhost:3306/springboot?characterEncoding=UTF-8

修改成

spring.datasource.url = jdbc:mysql://mysql:3306/springboot?characterEncoding=UTF-8

localhost换成mysql的目的是为了能让javaweb项目访问到mysql的容器(还有一种方案是localhost填写成宿主机的ip地址)

还有修改spring.datasource.url = root

将springboot项目通过maven或者gradle 将springboot项目打包成 ROOT.war

编写 Dockerfile 文档(文档名 Dockerfile)

FROM java

VOLUME /tmp

ADD ROOT.war app.war

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

EXPOSE 80

2. 将springboot项目打包成docker镜像

将ROOT.war 和 Dockerfile 文档放在同一目录

在ROOT.war 和 dockerfile的目录中 执行以下命令

docker build -t springboot .

执行完成后执行

docker images

你会看见一个叫springboot的镜像生成了,这个就叫做docker打包镜像

3. 编写docker-compose.yml 文档

version: "3"

services:

visualizer:

image: dockersamples/visualizer:stable

ports:

- "8080:8080"

volumes:

- "/var/run/docker.sock:/var/run/docker.sock"

deploy:

placement:

constraints: [node.role == manager]

networks:

- webnet

mysql:

image: registry.cn-hangzhou.aliyuncs.com/cczu/andy20160606:mysql5.7.20

ports:

- "3306:3306"

volumes:

- /home/mysql/data:/var/lib/mysql

environment:

- MYSQL_ROOT_PASSWORD=root

deploy:

placement:

constraints: [node.role == manager]

networks:

- webnet

web:

# replace username/repo:tag with your name and image details

image: springboot

deploy:

replicas: 1

restart_policy:

condition: on-failure

resources:

limits:

cpus: "1"

memory: 500M

ports:

- "80:80"

networks:

- webnet

networks:

webnet:

关键点

service :

visualizer:

mysql:

web:

此mysql为springboot项目中 jdbc ip地址的写法

其中mysql的用户名密码都是root

请确认服务对应的镜像都有,如果没有请自行先pull下来

docker pull registry.cn-hangzhou.aliyuncs.com/cczu/andy20160606:mysql5.7.20

// 这里是作者个人的mysql镜像,建议拉取后,tag一下然后push到自己的aliyun镜像上

docker pull dockersamples/visualizer:stable

// 官方镜像多拉几次,网络可能抽风

4. 执行 docker 集群命令

docker swarm init

说明 :docker-compose.yml 中可以配置集群信息,这里使用单机环境,但是命令需要执行

5. 通过 docker-conpose.yml 启动其中指明的3个服务

执行docker命令

docker stack deploy -c docker-compose.yml getstartedlab

启动成功后,稍微等待,然后

1.通过客户端工具,尝试去连接mysql

2.通过 ip:8080 去查看容器的相关信息,可以查看那些容器跑起来了

3.访问web项目 ip:80

一些问题

1. 执行 docker stack deploy -c docker-compose.yml getstartedlab ,springboot项目没有跑起来?

解决方法,执行

1,docker ps

2,docker service ls

3,docker stack ls

进行查询,springboot项目依赖mysql项目,mysql启动失败,那么springboot项目自然启动不起来

常用docker命令

docker build -t springboot. //生成镜像

docker images //显示所有镜像

docker tag image username/repository:tag //打包镜像

docker container ls //显示所有容器

docker ps -a //显示所有容器

docker container stop id //停止容器

docker container start id //启动容器

docker run -p 4000:80 username/repository:tag //以端口映射方式启动镜像

docker container rm $(docker container ls -a -q) //杀死所有运行的容器

docker image rm $(docker image ls -a -q) // 删除所有的镜像

docker service ls //显示已经有的服务

docker swarm init //首先初始化 进行集群 并且显示node节点

docker stack deploy -c docker-compose.yml getstartedlab //部署一个叫getstartedlab的 stack

docker stack rm getstartedlab // 删除stack

docker swarm leave --force //强制离开集群节点

docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/cczu/andy20160606:[镜像版本号] //打包镜像

docker stack ps getstartedlab --no-trunc //-- no-trunc 不间断显示日志

docker run -p 3306:3306 -v /home/mysql/data:/var/lib/mysql -e MYSQL_PASS="root" registry.cn-hangzhou.aliyuncs.com/cczu/andy20160606:mysql5.7.20 //挂载启动容器

docker volume ls //显示挂载信息

欢迎留言

如果有相关问题,可以进行留言或者email我,如果博文有不正确的地方,希望您留下的宝贵的意见。

- always welcome to you to leave messages

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值