日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時(shí)間:2025/3/15 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker部署mysql项目_docker部署springboot项目(web + mysql) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

docker目前是非常熱門的項(xiàng)目,本文暫不討論docker集群環(huán)境中的部署項(xiàng)目問題。

環(huán)境準(zhǔn)備

1. docker環(huán)境(本文使用centos7下的docker環(huán)境)

2. javaWeb項(xiàng)目(springboot Web項(xiàng)目)

實(shí)戰(zhàn)動(dòng)手

1. 將springboot項(xiàng)目打包成war包,并且編寫 Dockerfile 文檔

前提: 將springboot項(xiàng)目中

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項(xiàng)目訪問到mysql的容器(還有一種方案是localhost填寫成宿主機(jī)的ip地址)

還有修改spring.datasource.url = root

將springboot項(xiàng)目通過maven或者gradle 將springboot項(xiàng)目打包成 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項(xiàng)目打包成docker鏡像

將ROOT.war 和 Dockerfile 文檔放在同一目錄

在ROOT.war 和 dockerfile的目錄中 執(zhí)行以下命令

docker build -t springboot .

執(zhí)行完成后執(zhí)行

docker images

你會(huì)看見一個(gè)叫springboot的鏡像生成了,這個(gè)就叫做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:

關(guān)鍵點(diǎn)

service :

visualizer:

mysql:

web:

此mysql為springboot項(xiàng)目中 jdbc ip地址的寫法

其中mysql的用戶名密碼都是root

請確認(rèn)服務(wù)對應(yīng)的鏡像都有,如果沒有請自行先pull下來

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

// 這里是作者個(gè)人的mysql鏡像,建議拉取后,tag一下然后push到自己的aliyun鏡像上

docker pull dockersamples/visualizer:stable

// 官方鏡像多拉幾次,網(wǎng)絡(luò)可能抽風(fēng)

4. 執(zhí)行 docker 集群命令

docker swarm init

說明 :docker-compose.yml 中可以配置集群信息,這里使用單機(jī)環(huán)境,但是命令需要執(zhí)行

5. 通過 docker-conpose.yml 啟動(dòng)其中指明的3個(gè)服務(wù)

執(zhí)行docker命令

docker stack deploy -c docker-compose.yml getstartedlab

啟動(dòng)成功后,稍微等待,然后

1.通過客戶端工具,嘗試去連接mysql

2.通過 ip:8080 去查看容器的相關(guān)信息,可以查看那些容器跑起來了

3.訪問web項(xiàng)目 ip:80

一些問題

1. 執(zhí)行 docker stack deploy -c docker-compose.yml getstartedlab ,springboot項(xiàng)目沒有跑起來?

解決方法,執(zhí)行

1,docker ps

2,docker service ls

3,docker stack ls

進(jìn)行查詢,springboot項(xiàng)目依賴mysql項(xiàng)目,mysql啟動(dòng)失敗,那么springboot項(xiàng)目自然啟動(dòng)不起來

常用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 //啟動(dòng)容器

docker run -p 4000:80 username/repository:tag //以端口映射方式啟動(dòng)鏡像

docker container rm $(docker container ls -a -q) //殺死所有運(yùn)行的容器

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

docker service ls //顯示已經(jīng)有的服務(wù)

docker swarm init //首先初始化 進(jìn)行集群 并且顯示node節(jié)點(diǎn)

docker stack deploy -c docker-compose.yml getstartedlab //部署一個(gè)叫g(shù)etstartedlab的 stack

docker stack rm getstartedlab // 刪除stack

docker swarm leave --force //強(qiáng)制離開集群節(jié)點(diǎn)

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 //掛載啟動(dòng)容器

docker volume ls //顯示掛載信息

歡迎留言

如果有相關(guān)問題,可以進(jìn)行留言或者email我,如果博文有不正確的地方,希望您留下的寶貴的意見。

- always welcome to you to leave messages

總結(jié)

以上是生活随笔為你收集整理的docker部署mysql项目_docker部署springboot项目(web + mysql)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。