docker部署mysql项目_docker部署springboot项目(web + mysql)
前言
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
總結
以上是生活随笔為你收集整理的docker部署mysql项目_docker部署springboot项目(web + mysql)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java题-如何递归遍历一个文件夹下的所
- 下一篇: 程序与CPU